Страницы: 1
RSS
Выделение повторяющихся столбцов, Необходимо выделить группа столбцов с одинаковым составом номенклатуры, пока не останутся уникальные
 
Добрый день!
Задача довольно простая: необходимо выделить повторяющиеся столбцы. Иначе говоря, есть закономерность, что некоторые адреса магазинов с определенными товарами идентичны по составу. Сколько таких совпадений - не знаю, но нужны все. Думаю, это как-то решается с помощью циклов или формулой массива на идентичность. Думаю, понятно, что сумма по столбцу тоже является помощником. Так как показатель только состав, за количество принята единица товара. Стоит excel 2010. Заранее спасибо.
 
Цитата
Agent_MC написал:
Думаю, понятно, что сумма по столбцу тоже является помощником.
Поясните пож-та, каким образом сумма является критерием повторяющегося магазина?
Почему не использовали УФ?
Неизлечимых болезней нет, есть неизлечимые люди.
 
Agent_MC,  А много столбцов будет? Проверять нужно на 1 или просто пусто не пусто?
Изменено: Wiss - 26.07.2018 15:25:35
Я не волшебник, я только учусь.
 
TheBestOfTheBest, Это наоборот критерий того, что его можно не учитывать. Если у одного магазина 150 СКЮ, а у второго 155, то "вряд ли" у них есть шанс иметь один состав.
А как мне поможет условное форматирование? Я, честно говоря, сложно себе это представляю. Если это так, то я бы с радостью воспользовался. Но, на сколько я знаю, УФ сравнивает только строки - в данном случае не подходит.

Wiss, Проверять надо на совпадение всех строк в столбцах. Иначе значения не имеет. Может быть одинаковое количество единиц. но товары разные.
 
Мне кажется, что формула
=СУММПРОИЗВ(D4:D240;СТРОКА(D4:D240);СТРОКА(D4:D240))
должна дать уникальные значения для каждого сочетания товаров (строка 2). Может и не совсем "уникальное", но вероятность ошибки оцениваю как крайне низкую (при более-менее значительном числе товаров).
В файле также есть условное форматирование, но оно подсвечивает столбцы идентичные первым 3-и. Его нужно написать для каждого из 211 филиалов и ещё уникальные цвета раздать (что нереально), но для проверки моей гипотезы может пригодиться.
Изменено: Wiss - 26.07.2018 15:59:55
Я не волшебник, я только учусь.
 
Ну или
=СУММПРОИЗВ(D4:D240;СТРОКА(D4:D240);СТРОКА(D4:D240))+СУММПРОИЗВ(D4:D240;СТРОКА(D4:D240))
Блин. Тут математик нужен.
Но уверен, что за счёт манипуляции с суммами и/или произведениями номеров заполненных строк можно сделать 100% уникальный индекс.
Изменено: Wiss - 26.07.2018 16:08:39
Я не волшебник, я только учусь.
 
вариант
если сравнивать всех со всеми, то будет нужна матрица сравнения
формула для её заполнения
Код
=--И(массив(i)=массив(j))

вводить как формулу массива
там где 1 - совпадения ассортимента по магазинам
но вот как эту матрицу быстро заполнить
может кто-то из коллег подскажет
Изменено: Stics - 26.07.2018 16:44:28
 
Wiss, Спасибо большое. Вроде то, что нужно. Может не очень оптимально, но главное, что эффективно!
 
Stics,Не очень понял, что с этой матрицей делать
 
Я вот только не вкуриваю цель упражнения. Составить группы уникальных профилей? Просто по факту уникальные только 9 из 211. и 20 профилей.

Stics,
Цитата
Stics написал:
но вот как эту матрицу быстро заполнить
Для B2
=--AND(INDEX(Report!$A$3:$HE$239;;COLUMN()+1)=INDEX(Report!A$3:HE$239;;ROW()+1))

UDF
Код
Function GetSignature(ByRef RArray As Range)
MArray = RArray
ReDim OutArray(1 To UBound(MArray, 2))
For J = 1 To UBound(MArray, 2)
For i = 1 To UBound(MArray)
    OutArray(J) = OutArray(J) & IIf(MArray(i, J) = 1, 1, 0)
Next
Next J
GetSignature = OutArray
End Function


иии далее все плохо и медленно Sheet1, что не удивительно.
Но если через доп. строку вывести то что выдает функция по отдельному столбцу, то можно будет спокойно найти совпадения Sheet2.
Ну а самое быстрое, это транспонировать, использовать формулу и сводную построить.
Изменено: БМВ - 27.07.2018 23:22:54
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх