Страницы: 1
RSS
Сравнение по двум столбцам и перенос
 
Добрый день. Знаю, что тема распространенная, но не смог((

Есть две идентичные таблицы на разных листах
в столбце А у каждой индивидуальный номер из кучи цифр в столбцах BCD прочая информация

требуется сравнить одну с другой и если во второй отсутствует такой номер , то из первой, перенести всю строку во вторую, соответственно перенесенные в первой таблице удалить(скрыть/пометить)
P/S/ И желательно что бы можно было имена листов указывать в макросе

Заранее спасибо
 
Blazhenniy, желательно людям показать хотябы пример (с похожими данными и структурой файла) что есть в формате ексель ...
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Blazhenniy написал: ... не смог ... требуется сравнить ...перенести ...удалить(скрыть/пометить)
P/S/ И желательно...
OFF Однако - " 2.7. Если вам нужен не совет по самостоятельному решению задачи, а чтобы все сделали за вас - добро пожаловать в ветку Работа. Там, скорее всего, найдутся специалисты, которые разберутся с вашей проблемой быстро, качественно и за разумную плату."
PS Правила настоятельно рекомендуют посещать "Приемы", активно терзать поиск по форуму.
ps И учитывать особенности пп 2.2. 2.3... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Накидал
листь1 и лист 2 рабочие
лист 3 что должно получиться(неучавствует, так для понимания,считайте что в примере его нет)
данные на листе 1 и листе 2 при одинаковых номерах в столбце А могут быть разными
Изменено: Blazhenniy - 13.01.2018 21:53:40
 
Цитата
Z написал:
Однако
однако непонятно в чем выпад.
удалить(скрыть/пометить)  для этого и написано, что бы был вариант выбора, мне надо удалить, но если скрыть или подкрасить тоже устроит, знаю как с этим бороться дальше.
Желательно, это что бы я потом мог править под себя не дергая лишними вопросами...

итого "требуется сравнить ...перенести"  остальное описаание и надстройки
 
Для Лист1
=ВПР($A4;Лист1!$A$2:$W$5;СТОЛБЕЦ();0)
Дальше по аналогии.
Изменено: Bema - 12.01.2018 12:51:58
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

вставил в пример везде ноль
впр по 10000 строк повесит комп(((
и не автоматизирует  можно в  вставить впр в простой в лист1 провприть и чего нет(н/д) перенести на лист 2, но это не выход
Изменено: Blazhenniy - 13.01.2018 21:54:08
 
Цитата
Blazhenniy написал:
вставил в пример везде ноль
Поправил формулу в сообщении №6
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
че то нито или одно из 2х
вставляю на лист 1 в ячейку а 6? Что это дает?

структуру простого впр я знаю но тут
исходное значение берет с одной ячейки, а надо проанализировать 2 столбца
диапазон сверки тут вся таблица, а сверяем только столбцы а
столбец() мне непонятен

видимо формула сверяет все данные и если на листе 1 и на листе 2 строки совпадают полностью то номер, если не совпадает н/д правильно? тоже нет
Изменено: Blazhenniy - 13.01.2018 21:54:36
 
Цитата
Blazhenniy написал:
листь1 и лист 2 рабочие
лист 3 что должно получиться
Если на Листе 3 хотите получить результат, почему формулу вставляете на Лист 1?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
OFF Заметки по поводу... Blazhenniy, который ранее был KnyazKoldunVasilii, полгода назад уже оглашал свою "хочуху".
Познавательная и поучительная динамика обсуждения в этой теме - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=94790&amp...
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
Z написал:
OFF Заметки по поводу...
Blazhenniy , который ранее был  KnyazKoldunVasilii , полгода назад уже оглашал свою "хочуху".
Познавательная и поучительная динамика обсуждения в этой теме -  http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=94790&...
не начинайте)) решение так и не найдено. Я подучился))) пример подобрал получше
Цитата
Bema написал:
Если на Листе 3 хотите получить результат, почему формулу вставляете на Лист 1?
лист 3 для понимания был, видимо он и запутал.
Данные то должны перекачивать с листа 1 в лист 2
 
Правила Вы опять "забыли"? Что кнопка цитирования не для бездумного нажатия - не знаете? Что дублировать темы запрещено - выпало из правого уха?
А что правила говорят о дублеях учетной записи, не скажете, goo2020?
 
vikttur, тема другая, дуплета учетки в данном случае нет,придирки пусты, цитаты использованы уместно. Просто бытует мнение что задача для местных гуру сильно сложная ...но конечно я тупой или плати (что ближе к истине, но не в моем случае, я на этом не зарабатываю, а хочу облегчить труд нескольким людям), если чей то макрос неработает значит ты что то не так сделал, если неугодное сказал-бан. Может конечно я объясняю плохо, но куда уж точне/понятнее описать пример, чем он описан тут , вряд ли стоит.
 
Я так понимаю тему можно закрывать, кроме негатива тут ничего не увидишь. Более того, создавал тему в курилке с реально простым описанием готовых блоков собираешь нужный макрос из рабочих кусков кода..., ее  в этот же день удалили, типа людям это не надо.
 
А не проще скопировать все данные из листа 1 и вставить на лист 2 (ниже существующих данных), затем удалить дубликаты по столбцу "A".
Можно "вручную", можно макросом.
Чем шире угол зрения, тем он тупее.
 
SAS888, В ручную долго, и как узнать/указать какой дубликат нужнее? Точнее , стандартными средствами эксэль оставляет тот который находит первым, тогда надо как то вставлять наоботот, те что есть а потом те что были ранее, а комп при копировании таких объемов плачет((.

Спасибо, подумаю и в этом направлении.

Мне казалось будет проще, но исключить руки не получается.

Задача вроде простая, чего небыло добавилось в таблицу, а что было обновляет данные. Но все эти програмы и надстройки громоздки, а машины и люди сдесь простые, им надо открой два файла одновременно и на листе таком то нажми кнопку 1, потом, 2 , потом, 3, получившееся сохрани. Иначе делов не будет.  
 
Можно, например так:
Код
Sub Main()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Application.ScreenUpdating = False
    Set ws1 = Sheets("Лист1"): Set ws2 = Sheets("Лист2")
    ws1.Rows("2:" & ws1.Cells(Rows.Count, 1).End(xlUp).Row).Copy
    ws2.Rows(2).Insert Shift:=xlDown
    ws2.UsedRange.RemoveDuplicates 1, xlYes
End Sub
Строки из листа 1, которых нет в листе 2 будут добавлены, а одноименные строки будут обновлены. И без всяких циклов.
А какие строки на листе 1 нужно выделять (скрывать или удалять) ? Которые были добавлены? Обновлены? И те и другие?
Чем шире угол зрения, тем он тупее.
 
SAS888,спасибо почти, но дублирует  на листе 2 в низу таблицы строку 2 со старыми значениями, на большой таблице задублировало в середине на 538 строке.


По поводу окраски, было бы неплохо выделять те которые были, хотя как специалист скажите какой макрос будет работать быстрее быстрее скрыть, удалить или окрасить?

Как я понял макрос добавляет новые строки в начало таблицы и первую заявку которая совпала дублирует оставляя и старую и новую с другими значениями.

Я правильно понимаю, он сравнивает по значению лист 1 и лист 2 в столбце A, если есть совпадение то перенос с заменой, если совпадений нет , просто перенос, те значения которые были в таблице на странице 2, но небыло совпадений макрос нетрогает?
Изменено: Blazhenniy - 16.01.2018 16:19:30
 
Цитата
Blazhenniy написал:
...быстрее быстрее скрыть, удалить или окрасить?
Практически - без разницы.
В подобных случаях, я формирую дополнительный массив, в процессе обработки заполняю его какими-либо символами и размещаю рядом с полученной (либо исходной) таблицей Это быстро. Затем, окрашиваю (удаляю, скрываю) строки, помеченные этими символами (без перебора) и удаляю добавленный ранее служебный столбец (столбцы).
По поводу дублей - проверьте, на самом ли деле значения одинаковы?
И еще: если требуется окрашивать (удалять, скрывать) обновленные строки, то потребуется другой метод (массивы, словари и т. п.). Не думаю, что он будет "тормозить". Скажите, какое максимальное количество строк у Вас может быть в каждой из таблиц?
Чем шире угол зрения, тем он тупее.
 
SAS888, в существующей таблице уже 13500 строк, и она каждую неделю растет строк на 150-300 ( т.е. если добавляем 300 из них 150 новые которых ранее небыло, 150 старые которые в этой таблице уже были, но с новыми нначениями)
в той из которой берем новые данные изначально около 5000 строк, но методом хитрых махинаций снижаю условно до 500-2000 строк.

по поводу дублей всегда один дубль, если  на листе 1 значение в столбце А совпадает со значением в столбце А на втором листе, то он есть, если там новое значение(отсутствующее на листе 2, то дубля нет.   При наличии одмнаковых заголовков все ок.
Изменено: Blazhenniy - 15.01.2018 13:06:59
 
Объясните подробнее, в чем разница между одинаковыми строками и существующими, но с другими значениями.
Я понимаю так:
1. Если значения ВСЕХ ячеек строки 1-го листа совпадает со ВСЕМИ значениями строки 2-го листа, то это одинаковые.
2. Если значения 1-го столбца совпадают, а хотя бы одно из значений в других столбцах отличаются - то это существует, но другая.
3. Если значение из 1-го столбца строки 1-го листа не существует в 1-ом столбце на 2-ом листе - то такой строки нет.
Так? Все ли значения строк нужно сравнивать, чтобы утверждать, что это та же строка, но с другими данными?
Чем шире угол зрения, тем он тупее.
 
SAS888,
Нет. Вы все правильно пишите, но в моем случае в столбце А эксклюзивный номер и сравнивать достаточно по нему.Т.е.допустим лист 2 13500 строк, а лист 1 одна строка, тогда возможно 2 варианта.
1 Если такого эксклюзивного номера на листе 2 в столбце А , нет просто переносим данные, Итого на листе 2 было 13500 строк, стало 13501 строка
2 Если такой номер есть, то данные с 1 листа появляются на 2м (они могут и не поменяться, но тот файл свежее и нет смысла делать новые проверки, полностью, не полностью, достаточно номера, если он есть то заменяем строку с листа 1 на лист 2 и не паримся ) Итого, было 13500 строк , и 13500 строк осталось, но при совпадении данные обновились.
Изменено: Blazhenniy - 15.01.2018 14:35:19
Страницы: 1
Читают тему
Наверх