从每个用户的获取日期开始的自定义周编号

时间:2018-10-19 22:46:42

标签: filter google-sheets min datediff week-number

是否有一种方法可以计算自用户的第一个交易日期开始的自定义周数?用户(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,而不是每个用户的最小日期数组,因此给出了意外的结果。我要去哪里错了?

2 个答案:

答案 0 :(得分:0)

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

具有以下内容的EG

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

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

$ RAILS_ENV=test rails console
Rails.application.secrets.facebook[:key]
=> <your key here>

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

答案 1 :(得分:0)

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

=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

希望这会有所帮助。