Страницы: 1
RSS
Найти наиболее часто встречающиеся сочетания товаров в чеках
 
Добрый день.
У меня есть матрица в которой по строкам расположены чеки, а по столбцам товарные позиции. (подготовил исходные данные именно в таком виде, т.к. мне кажется так более удобно будет проанализировать, но можно и в любом другом виде представить если это упростит задачу).

Суть задачи состоит в том, что бы проанализировать чеки и понять, какие товарные сочетания из 3 позиций наиболее часто встречаются в чеках. Пока не догоняю как это можно сделать. Осложняется еще это тем, что в реальности чеков около 45000 шт., а позиций около 500 шт., есть шанс, что Эксель вообще справится с этой задачей?

Помогите пожалуйста.
 
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=69597

Поиск на форуме вам в помощь....
 
DopplerEffect, а куда размещать будем два миллиона сочетаний 3 из 500?
Код
498*499*500/(2*3)=20708500
 
Вот решение для вашего примера
Код
Sub main()
Application.ScreenUpdating = False
Dim V As Range, R&, LC&, CC&
Dim T1&, T2&, T3&
Dim M1&, M2&, M3&, CM&
Set V = Cells
LC = V(3, Columns.Count).End(xlToLeft).Column
If V.Worksheet.AutoFilterMode Then V.AutoFilter
V.Rows(3).AutoFilter
For T1 = 2 To LC - 2
  V.Rows(3).AutoFilter T1, ">0"
  For T2 = T1 + 1 To LC - 1
    V.Rows(3).AutoFilter T2, ">0"
    For T3 = T2 + 1 To LC
      V.Rows(3).AutoFilter T3, ">0"
      CC = V.Worksheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1
      If CC > CM Then CM = CC: M1 = T1: M2 = T2: M3 = T3
      V.Rows(3).AutoFilter T3
    Next T3
    V.Rows(3).AutoFilter T2
  Next T2
  V.Rows(3).AutoFilter T1
Next T1
V.Rows(3).AutoFilter M1, ">0"
V.Rows(3).AutoFilter M2, ">0"
V.Rows(3).AutoFilter M3, ">0"
Application.ScreenUpdating = -1
End Sub

но для 45 000 чеков и 500 товаров результата в этой жизни вряд ли дождётесь :oops:

Хотя...
Если отсортировать товары (столбцы) по популярности и пошаманить с условиями отбора (типа если данный товар куплен не более текущего СМ раз то выход из текущего цикла) шанс получить результат может появиться.
Изменено: Апострофф - 02.05.2021 11:25:25
 
Доброе время суток.
Вариант на Power Query. Исходную таблицу лучше иметь как левую, а не как на листе "Лист1". Решение несколько лобовое. Лучше всё же разобрать алгоритм генерации сочетаний по три из заданного N, но это уже другая история.
Изменено: Андрей VG - 02.05.2021 11:36:15 (Устранено нарушение уникальности троек)
 
Спасибо всем, разбираюсь, у меня к сожалению Power Query почему то не хочет запускаться
Страницы: 1
Наверх