#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
У меня есть лист следующего вида:
Мне нужно подсчитать, сколько было продано upsells, когда конкретный продукт был их основной покупкой.
Например, продукт A должен возвращать 2 (заказы 102 и 108).
Order ID Date Type Customer ID Product
100 2019-01-10 Main 21 A
102 2019-01-10 Upsell 21 B
104 2019-01-10 Main 22 A
106 2019-01-10 Main 23 A
108 2019-01-11 Upsell 23 C
110 2019-01-11 Main 24 A
... ... ... ... ...
Прямо сейчас я использую раздражающе сложный FILTER
в ячейке, похожий на этот:
=COUNTA(FILTER(A:A, C:C = "Upsell", D:D = FILTER(D:D, C:C = "Main", E:E = "A")))
Однако, похоже, это не работает. Это также не совсем то, что нужно. Технически, если кто-то также позже купил какой-либо другой продукт, кроме продукта A, в качестве основной покупки, любая из его дополнительных продаж все равно будет учитываться при поиске количества дополнительных продаж продукта A.
Есть ли более простой / надежный способ сделать это?
Возможно ли настроить цикл в сценариях Google Apps, который может это делать? (Просмотрите каждую соответствующую строку, найдите все строки, содержащие один и тот же идентификатор клиента, продажи которых увеличиваются, скажем, в течение 2 дней после основной покупки или до их следующей основной покупки?)
Ответ №1:
Вы можете попробовать перекрывающиеся диапазоны:
=COUNTA(FILTER(A3:A8,D2:D7=D3:D8,C3:C8="Upsell",C2:C7="Main",E2:E7="A"))
Предполагая, что в A1: E7 есть ваша таблица,
C2:C7="Main",E2:E7="A"
будет ли продукт основным фильтромC3:C8="Upsell"
Является ли следующий продукт распродажей?D2:D7=D3:D8
Это тот же клиент, который купил upsell и main?FILTER
иCOUNT
соответствующие идентификаторы заказа на повышение цены.