Google 工作表 - 按组计算唯一值(仅当尚未计入上一组时)
Google Sheets - COUNT UNIQUE values by group ONLY IF NOT already counted in previous group
我希望能解释清楚我要做什么。
我在 B 列中有一些数据,按 A 列所示分组。
我想计算 A 列中每个组的唯一值,而不考虑前一组中已经计算的唯一值。
例如,我想:
- 计算 'proyecto2' 中的唯一值不计算 'proyecto1' 中已经存在的唯一值。
- 计算 'proyecto3' 中的唯一值不计算 'proyecto1' 和 'proyecto2' 中已经存在的唯一值。
- 计算 'proyecto4' 中的唯一值不计算 'proyecto1'、'proyecto2' 和 'proyecto3'.
中已经存在的唯一值
- 等等...
下面你可以找到一个 Google Sheet 我找到的解决方案,即使我对它不是很满意,也很容易表明我的意思。
https://docs.google.com/spreadsheets/d/1x8S76_6dUnHr1NtUbzNzpLTpQtqan6_ohemcrGsrpC0/edit#gid=0
基本上,在 A:B 列中,我们有输入数据。您可以在 A 列和 B 列中添加数据以查看其工作原理(目前,我的方法仅在您在 A 列中添加以下组之一时才有效:'proyecto1'、'proyecto2'、'proyecto3'、'proyecto4'、'proyecto5' 和 'proyecto6').
在 D:E 列中,我们有输出数据,基本上是组统计的唯一值。
在第 G:W 列中,用于处理数据的公式。
显然,我的方法适用于 'proyecto6',因为在 "processing columns" 中,我只考虑了 'proyecto6'.
的公式
一切正常,但我的问题是:您能否建议我采用一种更动态的方式来实现我想要做的事情?或者唯一的办法就是写一些代码?
- 删除 D:Z
范围内的所有内容
粘贴到 D2 单元格:
=UNIQUE(A2:A)
粘贴到 E2 单元格:
=ARRAYFORMULA(IF(LEN(D2:D);
MMULT(IFERROR(LEN(G2:Z)/LEN(G2:Z); 0); TRANSPOSE(COLUMN(G2:Z2)^0)); ))
粘贴到 G2 单元格:
=TRANSPOSE(UNIQUE(FILTER(B:B; A:A=D2)))
粘贴到 G3 单元格并向下拖动:
=TRANSPOSE(UNIQUE(FILTER(FILTER(B:B; A:A=D3);
NOT(COUNTIF(INDIRECT("G2:"&ROW()-1); FILTER(B:B; A:A=D3))))))
我希望能解释清楚我要做什么。
我在 B 列中有一些数据,按 A 列所示分组。
我想计算 A 列中每个组的唯一值,而不考虑前一组中已经计算的唯一值。
例如,我想:
- 计算 'proyecto2' 中的唯一值不计算 'proyecto1' 中已经存在的唯一值。
- 计算 'proyecto3' 中的唯一值不计算 'proyecto1' 和 'proyecto2' 中已经存在的唯一值。
- 计算 'proyecto4' 中的唯一值不计算 'proyecto1'、'proyecto2' 和 'proyecto3'. 中已经存在的唯一值
- 等等...
下面你可以找到一个 Google Sheet 我找到的解决方案,即使我对它不是很满意,也很容易表明我的意思。
https://docs.google.com/spreadsheets/d/1x8S76_6dUnHr1NtUbzNzpLTpQtqan6_ohemcrGsrpC0/edit#gid=0
基本上,在 A:B 列中,我们有输入数据。您可以在 A 列和 B 列中添加数据以查看其工作原理(目前,我的方法仅在您在 A 列中添加以下组之一时才有效:'proyecto1'、'proyecto2'、'proyecto3'、'proyecto4'、'proyecto5' 和 'proyecto6').
在 D:E 列中,我们有输出数据,基本上是组统计的唯一值。
在第 G:W 列中,用于处理数据的公式。
显然,我的方法适用于 'proyecto6',因为在 "processing columns" 中,我只考虑了 'proyecto6'.
的公式一切正常,但我的问题是:您能否建议我采用一种更动态的方式来实现我想要做的事情?或者唯一的办法就是写一些代码?
- 删除 D:Z 范围内的所有内容
粘贴到 D2 单元格:
=UNIQUE(A2:A)
粘贴到 E2 单元格:
=ARRAYFORMULA(IF(LEN(D2:D); MMULT(IFERROR(LEN(G2:Z)/LEN(G2:Z); 0); TRANSPOSE(COLUMN(G2:Z2)^0)); ))
粘贴到 G2 单元格:
=TRANSPOSE(UNIQUE(FILTER(B:B; A:A=D2)))
粘贴到 G3 单元格并向下拖动:
=TRANSPOSE(UNIQUE(FILTER(FILTER(B:B; A:A=D3); NOT(COUNTIF(INDIRECT("G2:"&ROW()-1); FILTER(B:B; A:A=D3))))))