Сравните столбцы неравной длины для совпадений и различий - PullRequest
0 голосов
/ 20 января 2011

Я объясню это в терминах Excel, так что это, вероятно, будет яснее.

У меня есть лист Excel с 2 столбцами.

Столбец А содержит 69 000 строк. Колонка B имеет 49 000 строк.

Колонка А имеет наш полный список продуктов Колонка B имеет список продуктов от производителя 1

Есть только определенные / некоторые строки, которые являются общими для 2 столбцов. а также столбец B не является подмножеством столбца A. В столбце A есть дополнительные записи, как и в столбце B.

Мне нужно знать, какие строки из столбца B являются общими для столбца A какие строки из столбца B не являются общими для столбца A

Как бы мне этого достичь? Я пытаюсь преуспеть, но vlookup берет навсегда и вешает трубку. Существуют ли другие утилиты Windows / Office, которые могут мне помочь? Если это макрос, не могли бы вы дать мне сценарии и предложения для его выполнения?

У меня есть доступ к машине linux, и я знаком с этими инструментами.

Я могу перенести эту информацию в текстовый файл / ы, могу ли я запустить какой-нибудь скрипт sed или awk для печати вывода?

Любая помощь будет великолепна.

Ответы [ 4 ]

2 голосов
/ 20 января 2011

Используйте функцию MATCH(), она даст вам число, если есть результат, и #NA, если его нет.

Я всегда работаю в таблицах в Excel 2007 и новее, новыдаст оба синтаксиса:

Предполагая, что у вас есть таблица, с которой нужно сравнивать в столбцах «column1» и «column2», проверка наличия значения в Column2 в Column1

=ISNUMBER(MATCH(Table1[[#This Row],[Column2]],[Column1],0))

Или, если у вас есть массив старой школы с данными в столбцах A и B, ищите значение в B в A:

=ISNUMBER(MATCH(Sheet1!$B2,Sheet1!$A$2:$A$11,0))

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

1 голос
/ 20 января 2011

Я удивлен, что VLOOKUP работает медленно / ненадежно, 70 000 строк - ничто.Вы уверены, что у вас есть правильные формулы?

Если у вас есть Excel, у вас может быть MS Access.Загрузка столбцов в таблицу Access и разрешение с помощью JOIN будет очень быстрым

1 голос
/ 20 января 2011

Это очень просто в Unix или Linux. Начните с помещения всех продуктов вашей компании в один файл, а всех продуктов другой компании - в другой. Я назову их FileA и FileB.

Сортировать их.

$ sort -u FileA > temp_file
$ mv temp_file FileA

$ sort -u FileB > temp_file
$ mv temp_file FileB

Продукты, которые являются общими для обоих файлов. , .

$ comm -12 FileA FileB

Продукты, которые являются уникальными для FileB. , .

$ comm -13 FileA FileB
0 голосов
/ 20 января 2011

Сортируйте два списка и используйте Approximate Vlookup (последний аргумент True): это будет очень быстро (бинарный поиск), но вам нужно обработать случай NoMatch: что-то вроде этого в столбце C
=IF(B1=Vlookup(B1,$A$1:$A$69000,1,True),"Match","NoMatch")
и скопируйте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...