【问题标题】:Google Sheets - COUNT UNIQUE values by group ONLY IF NOT already counted in previous group谷歌表格 - 仅当尚未计入前一组时才按组计算唯一值
【发布时间】:2019-05-14 00:38:35
【问题描述】:

我希望清楚地解释我要做什么。

我在 B 列中有一些数据,按 A 列所示分组。

我想计算 A 列中每个组的唯一值,而不考虑前一组中已经计算的唯一值。

例如,我想:

  • 计算“proyecto2”中的唯一值不计算“proyecto1”中已经存在的唯一值。
  • 计算“proyecto3”中的唯一值不计算“proyecto1”和“proyecto2”中已经存在的唯一值。
  • 计算“proyecto4”中的唯一值不计算“proyecto1”、“proyecto2”和“proyecto3”中已经存在的唯一值。
  • 等等……

您可以在下面找到包含我找到的解决方案的 Google 表格,即使我对此不太满意,也可以轻松说明我的意思。

https://docs.google.com/spreadsheets/d/1x8S76_6dUnHr1NtUbzNzpLTpQtqan6_ohemcrGsrpC0/edit#gid=0

基本上,在 A:B 列中,我们有 INPUT DATA。您可以在 A 列和 B 列中添加数据以查看其工作原理(目前,我的方法仅在您在 A 列中添加以下组之一时才有效:'proyecto1'、'proyecto2'、'proyecto3'、'proyecto4' , 'proyecto5' 和 'proyecto6')。

在 D:E 列中,我们有输出数据,基本上是组计算的唯一值。

在 G:W 列中,处理数据的公式。

显然,我的方法适用于“proyecto6”,因为在“处理列”中,我只考虑了“proyecto6”的公式。

一切正常,但我的问题是:您能否建议我一种更动态的方式来实现我想要做的事情?还是只能写一些代码?

【问题讨论】:

    标签: filter google-sheets array-formulas google-sheets-formula


    【解决方案1】:
    • 删除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$2:B; A$2:A=D2)))

    • 粘贴到G3单元格并向下拖动:

      =TRANSPOSE(UNIQUE(FILTER(FILTER(B$2:B; A$2:A=D3);
       NOT(COUNTIF(INDIRECT("G2:"&ROW()-1); FILTER(B$2:B; A$2:A=D3))))))

    【讨论】:

    • 太好了,完美运行!我可以要求对 E2 中的内容进行非常简短的解释吗?为什么选择 MMULT()?
    • 基本上这是一个简单的 mmult,我们在数组中的行中模拟 COUNTA 行为。例如,如果不为空 = 1*1,如果为空 =0*1 ...更多:infoinspired.com/google-docs/spreadsheet/…
    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 2012-02-10
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多