Сравнение двух столбцов на совпадения и в третьем выводить значение

Автор PV, 18 октября 2020, 22:59

0 Пользователи и 1 гость просматривают эту тему.

PV

Доброго дня!
Нужна помощь!
Суть заключается в том, что нужно отсортировать на совпадения 500000 позиций по артикулам и выявить не совпадающие. На форуме похожую формулу нашел, но на 500 позиций она работает, а вот но 500000 уже выводит разные значения.
Пример файла прикрепил.

bigor

Доброго.
Не понял, что нужно. В столбце D найти дубликаты? или найти сколько раз значения из А повторяются в D?
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

PV

В столбце D найти дубликаты
Описание:
Есть несколько прайс-листов, артикулы которые там есть имеют точное совпадение между друг другом, каждый прайс от 200 тыс позиций, планируется все прайсы объединить в один соответственно убрав совпадающие позиции. Пока что пришло в голову, это на примере выложенного файла (то что нашел тут на форуме):
В столбце А находятся артикулы прайса поставщика, в столбце D находятся артикулы нашего прайса, позиции построчно в столбце А сравниваем со всеми артикулами в столбце D и если попадаются совпадения, то в столбце В напротив каждого артикула столбца А проставляется значение допустим если совпало, то цифра 1, если нет, то 0, это мне нужно для того, что бы потом отфильтровать все строки со значением 0 скопировать и вставить в наш прайс.
Возможно есть решение проще. Я не профи в этом.
Если что то не так объяснил, пишите, мне это нужно сделать как воздух.

bigor

Если имеется полное совпадение артикулов, то в B достаточно разместить формулу =COUNTIF($D$2:$D$500000;A2), но даже с ней поиск по 500 тыс позиций будет не быстрым.
В настройках вычислений должна стоять галка без подстановки и регулярных выражений.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

economist

Если такое надо делать каждый день, то можно упариться ждать Calc. Тут нужен Python+Pandas. В нем это 4 строки, которые отработают в 5-10 раз быстрее всех других существующих способов:

pr1=pd.read_excel('pr1.ods', index_col='арт.')
pr2=pd.read_excel('pr2.ods', index_col='арт.')
pr.merge(pr1, pr2, how='outer'))
pr.to_excel(pr.xls)

Тема Pandas глубока, с разбегу не получится. Но изучение того стоит, если такие объемы и задачи.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

PV

Цитата: economist от 19 октября 2020, 10:49Тема Pandas глубока, с разбегу не получится. Но изучение того стоит, если такие объемы и задачи.
Спасибо за совет, на будущее попробую присмотреться к этой программе.

PV


bigor

Ну тогда просто снять галку "Разрешить регулярные выражения в формулах"
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

PV


bigor

Формула считает количество вхождений строки из столбца А в столбце D.  Т.е. если 0, то в А уникальное значение, от 1 и выше - такие значения уже есть в  D
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

sokol92

Как и в Excel, для больших диапазонов ячеек поиск будет эффективен только, если массив ячеек, в котором производится поиск, будет упорядочен.
Поэтому, отсортируйте используемый массив ячеек столбца D по возрастанию, занесите в B2 формулу:
=ВПР(A2;$D$1:$D$212942;1;1)=A2
и протяните вниз. Должно работать быстро.
Владимир.

PV

Цитата: Bigor от 19 октября 2020, 15:42Формула считает количество вхождений строки из столбца А в столбце D.  Т.е. если 0, то в А уникальное значение, от 1 и выше - такие значения уже есть в  D
Понял, спасибо, завтра по раньше попробую.

PV

Не тянет, висит. Я что то за сомневался, что он сможет обработать.

bigor

А вариант sokol92 пробовали? Он должен быть шустрее намного
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

rami

Цитата: PV от 19 октября 2020, 10:17...планируется все прайсы объединить в один соответственно убрав совпадающие позиции.
Самое простое и быстрое — это фильтр с параметром "без повторений".

Объедините все данные в один столбец (ваши и поставщиков) и примените фильтр как на картинке (вывод результата можно сделать на любой лист).


P.S. картинка с LibreOffice, но на Apache OpenOffice так же.