每个用户的获取日期的自定义周数

Custom Week number from Acquistion Date of each User

有没有办法计算从用户的第一个交易日期开始的自定义周数?用户 (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

还从上面的公式中删除了 SORT:

=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,而不是每个用户的最小日期数组。我哪里错了?

您尝试过使用 MINIFS() 函数吗?

EG 具有以下内容

单元格中的日期 B2:B10 单元格中的电子邮件 C2:C10

单元格 A2 中的公式将给出单元格 C2 中电子邮件地址的最早日期

=MINIFS($B:$B, $C2:$C10, "="&C2)

您应该可以在公式中使用它来计算周数

对于那些可能面临类似挑战的人,这里是答案:

=ARRAYFORMULA(IF(B2:B="","",ROUND((B2:B-VLOOKUP(C2:C,SORT({C2:C,B2:B},2,1),2,0))/7)+1))

我们的想法是对 C 列进行 Vlookup,按升序向其传递经过切换和排序的日期范围。然后从 B 列日期中减去这些第一个日期,以获得所需的结果,即。几天或几周。

可以删除 +1,因为我用它只是将起始周显示为 1 而不是 0。因此结果可能略有不同。但是没有+1,结果是准确的,尤其是当你做队列的时候。

0
0
10
0
0
6
15
21
0
5
7
7
8
9
0
6
13

作为检查,我删除了 7 和 +1 的除法,然后检查了日期,它们是正确的。

0
0
69
0
0
42
106
144
0
34
52
52
55
60
0
40
94

希望对您有所帮助。