Google Sheets中按指定周数统计C列重复姓名数量的问题
Google Sheets中按指定周数统计C列重复姓名数量的问题
嗨,我太懂这种折腾公式半天出不来结果的郁闷了!我来帮你搞定这个统计问题,先理清楚你的需求和现有数据:
你的核心需求是:根据E列的周数列表,在F列对应位置统计该周内C列重复姓名的相关数量。先把你的数据整理成清晰的表格方便参考:
| A | B | C | D |
|---|---|---|---|
| 3/20/2024 | Data A | Paul Jones | 12 |
| 3/19/2024 | Data B | Paul Simons | 12 |
| 3/19/2024 | Data B | Paul Simons | 12 |
| 3/16/2024 | Data C | Bob More | 11 |
| 3/8/2024 | Data A | Jack Silvan | 10 |
| 3/7/2024 | Data A | Jack Silvan | 10 |
| 3/6/2024 | Data D | Marc Stone | 10 |
| 3/5/2024 | Data D | Marc Stone | 10 |
你已经用=ArrayFormula(if(A2:A="",,ISOWEEKNUM(A2:A)))在D列算出了每行日期对应的周数,接下来就看你需要哪种统计维度了:
方案1:统计「每个周里有多少个姓名出现了重复」
比如周12里只有Paul Simons重复了,结果就是1;周10里Jack Silvan和Marc Stone都重复了,结果就是2;周11没有重复姓名,结果为0。
单单元格公式(下拉填充)
在F2单元格输入,然后下拉到需要的行即可:
=COUNTA(UNIQUE(FILTER(C:C, D:D=E2, COUNTIFS(C:C, C:C, D:D, E2)>1)))
数组公式(一次性填充整列)
如果不想手动下拉,用MAP函数(需要你的Google Sheets支持新版函数)实现自动填充:
=ArrayFormula(IF(E2:E="",,MAP(E2:E, LAMBDA(wk, COUNTA(UNIQUE(FILTER(C:C, D:D=wk, COUNTIFS(C:C, C:C, D:D, wk)>1)))))))
方案2:统计「每个周里重复的记录总条数」
也就是该周总记录数减去唯一姓名的数量,比如周12总共有3条记录,唯一姓名是2个,重复条数就是1;周10总共有4条记录,唯一姓名是2个,重复条数就是2。
单单元格公式(下拉填充)
=COUNTA(FILTER(D:D, D:D=E2)) - COUNTA(UNIQUE(FILTER(C:C, D:D=E2)))
数组公式(一次性填充整列)
=ArrayFormula(IF(E2:E="",,MAP(E2:E, LAMBDA(wk, COUNTA(FILTER(D:D, D:D=wk)) - COUNTA(UNIQUE(FILTER(C:C, D:D=wk)))))))
为什么你之前的公式没生效?
你之前用的公式里,INDEX(...,1,1)只会固定返回第一个计算结果,没办法对应E列每个周数做动态匹配,而且整体逻辑没有把E列的周数作为条件和D列做绑定,所以才得不到正确的对应结果。
你可以根据自己的实际需求选上面的方案试试,应该就能得到你想要的统计结果啦!
备注:内容来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

