【问题标题】:Google Sheet | Excel | Array Formula + CountIf + Partial Text Problem谷歌表 |电子表格 |数组公式 + CountIf + 部分文本问题
【发布时间】:2022-01-03 23:28:55
【问题描述】:

我对 ArrayFormula 很陌生,一直在尝试,但有时该公式有效,有时无效。我要做的是结合 ArrayFormula、Countif 来搜索部分文本。

如下面的工作表所示,有 10 个科目(A 列),每个科目至少有​​ 4 个样本(A、B、C、D)中的一个汇总为一个字符串(B 列)。我要做的是找出哪个主题有样本 A 或 B 或 C 或 D。

我为每个样本尝试了一个公式,例如单元格D3

=IF(COUNTIF($B3,"*"&$D$2&"*")>0,$A3,"")

它返回正确的结果。但是,当我在单元格I3 中尝试数组公式时,

=arrayformula(IF(COUNTIF($B3:B,"*"&$D$2&"*")>0,$A3:A,""))

答案很奇怪。例如:没有样本“A”的受试者(Gamma、Zeta、Eta、Theta)显示为具有样本“A”。这也适用于样本 B、C、D

不知道这里出了什么问题。 Here is the link to the worksheet

【问题讨论】:

  • 您使用的是 Excel 还是 GoogleSheets?我假设后者并删除了 Excel 标签。什么,究竟是“答案很奇怪”。什么意思?
  • 这是谷歌表格。没有样本“A”的受试者(Gamma、Zeta、Eta、Theta)显示为具有样本“A”。
  • 你可以套用这个公式=ARRAYFORMULA (IF(REGEXMATCH(B3:B, D2:G2), A3:A,))

标签: google-sheets array-formulas


【解决方案1】:

我不会使用 Countifs 或数组公式。请改用filter。将此公式放入单元格i3

=Filter(if(REGEXMATCH(B3:B,$D$2),A3:A,""),B3:B<>"")

【讨论】:

    【解决方案2】:

    尝试:

    =INDEX(QUERY(IFERROR(TRIM(SPLIT(FLATTEN(IF(IFERROR(SPLIT(B3:B, ","))="",,
     SPLIT(B3:B, ",")&"×"&A3:A)), "×"))), 
     "select max(Col2) where Col2 is not null group by Col2 pivot Col1"))
    

    如果您想按照示例对其进行排序,请在第 2 行使用:

    =INDEX(IFNA(VLOOKUP(A2:A, QUERY(IFERROR(TRIM(SPLIT(FLATTEN(
     IF(IFERROR(SPLIT(B3:B, ","))="",,SPLIT(B3:B, ",")&"×"&A3:A)), "×"))), 
     "select Col2,max(Col2) where Col2 is not null group by Col2 
      pivot Col1 label Col2'Subjects'"), {2,3,4,5}, 0)))
    

    【讨论】:

      【解决方案3】:

      您可以使用一个公式完成所有四列结果。

      从 I3:L3 中删除所有公式。

      将以下公式代入I3:

      =ArrayFormula(IF(REGEXMATCH(B3:B,I2:L2),A3:A,))

      简单来说,这就是“如果 B3:B 中的任何内容与 I2:L2 中的值匹配,则在匹配行的匹配列中返回 A3:A;如果不匹配,则返回 null。 "

      【讨论】:

        猜你喜欢
        • 2012-07-06
        • 2021-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-17
        相关资源
        最近更新 更多