Есть ли способ расчета номеров пользовательских недель, которые начинаются с первой даты транзакции пользователя?Столбцы Users (emailId) и TransDate могут быть не в отсортированном состоянии, как показано ниже:
например,
+------+-------------+---------------------+
| WkNo | TransDate | emailId |
+------+-------------+---------------------+
| 1 | 2018-Aug-30 | moz.shea@abc.com |
| 1 | 2018-Aug-30 | moz.shea@abc.com |
| 10 | 2018-Nov-07 | moz.shea@abc.com |
| 1 | 2018-Aug-09 | zabi.prado@abc.com |
| 1 | 2018-Aug-09 | zabi.prado@abc.com |
| 6 | 2018-Sep-20 | zabi.prado@abc.com |
| 15 | 2018-Nov-23 | zabi.prado@abc.com |
| 21 | 2018-Dec-31 | zabi.prado@abc.com |
| 1 | 2018-Aug-20 | silo.whitte@abc.com |
| 5 | 2018-Sep-23 | silo.whitte@abc.com |
| 7 | 2018-10-11 | silo.whitte@abc.com |
| 7 | 2018-10-11 | silo.whitte@abc.com |
| 8 | 2018-Oct-14 | silo.whitte@abc.com |
| 9 | 2018-Oct-19 | silo.whitte@abc.com |
| 1 | 2018-Jul-01 | pablo.gucci@abc.com |
| 6 | 2018-Aug-10 | pablo.gucci@abc.com |
| 13 | 2018-Oct-03 | pablo.gucci@abc.com |
+------+-------------+---------------------+
Я написал следующую формулу, используя функцию FILTER, которая затем предоставляет отфильтрованные даты в соответствии спользователь функции DATEDIF.Однако я не получаю желаемый результат, как показано выше.
=ARRAYFORMULA(if(B2:B="","",1 + round(DATEDIF(min(sort(FILTER(B2:B,C2:C=C2:C),1,true)),sort(FILTER(B2:B,C2:C=C2:C),1,true),"D")/7)))
РЕДАКТИРОВАТЬ:
Результат формулы:
1
7
7
7
8
10
10
13
13
14
16
16
16
17
19
22
27
Также удаленоСОРТИРОВАТЬ из приведенной выше формулы:
=ARRAYFORMULA(if(B2:B="","",1 + round(DATEDIF(min(sort(FILTER(B2:B,C2:C=C2:C),1,true)),FILTER(B2:B,C2:C=C2:C),"D")/7)))
Результат формулы:
10
10
19
7
7
13
22
27
8
13
16
16
16
17
1
7
14
Кажется, что оба работают, но дают неожиданные результаты, поскольку MIN вычисляет одну дату 2018-Jul-01
вместо массиваМинимальные даты на пользователя.Куда я иду не так?