Как динамически создать строку на основе диапазона значений в Google Таблицах - PullRequest
0 голосов
/ 12 июля 2020

В Google Таблицах составьте список клиентов (столбец A), которые купили продукт, и они заплатили разные цены (столбец B) в зависимости от того, когда они его купили и использовали ли они код скидки.

Мне нужно создать строку, чтобы показать количество людей, купивших продукт по каждой цене. Таким образом, строка должна выглядеть так, показывая, что 1 клиент заплатил 30 фунтов стерлингов, 4 клиента заплатили 33,50 фунта стерлингов и т. Д. c.

1@30 + 4@33.5 + 24@34 + 1@34.5 + 23*35 + 17@37 + 12@37.5

Если бы цена была фиксированной суммой, я мог бы использовать СЧЁТЕСЛИ и СУММЕСЛИ и жестко запрограммируйте цену в формулу. Но цена постоянно меняется, и список растет. Итак, мне нужна формула, которая может создавать столько строк, сколько необходимо. Как это сделать?

Вот таблица Google со списком клиентов, купивших продукт по разным ценам, и пример желаемого результата: https://docs.google.com/spreadsheets/d/1WmIXmkKmZOVcJ4dXxzy0CXbRCMya3uAdWk8yKhA50rw/edit?usp=sharing

1 Ответ

1 голос
/ 12 июля 2020

Тим, вложенные QUERYs должны это делать. Попробуйте это (при условии, что ваши цены указаны в столбце B, как указано в сообщении):

=ArrayFormula(JOIN(" + ",QUERY(QUERY(B:B,"Select COUNT(B), B Where B Is Not Null Group By B Order By B Asc Label COUNT(B) ''",0),"Select Col1")&"@"&QUERY(QUERY(B:B,"Select COUNT(B), B Where B Is Not Null Group By B Order By B Asc Label COUNT(B) ''",0),"Select Col2")))

Я рекомендую вам посмотреть, что центральный QUERY делает самостоятельно:

QUERY(B:B,"Select COUNT(B), B Where B Is Not Null Group By B Order By B Asc Label COUNT(B) ''",0)

Два других внешних запроса QUERY воздействуют на эти данные, объединяя первый столбец плюс «@» и второй столбец.

Затем JOIN просто берет этот виртуальный вертикальный список и формирует одну строку со знаком «+» между каждым элементом.

...