【问题标题】:Google Sheets ARRAYFORMULA count preceeding rows that meet conditionGoogle Sheets ARRAYFORMULA 计算满足条件的前行
【发布时间】:2020-03-25 18:48:28
【问题描述】:

假设我有一个如下所示的电子表格:

Name                   D-List
---------------------  ------
Arnold Schwarzenegger
Bruce Willis
Dolph Lundgren
Dwayne Johnson
Jason Statham
Keanu Reeves
Samuel L. Jackson
Sylvester Stallone
Vin Diesel

对于D-List 列,我想计算包含字符串"d" 的后续行数。如果该行不包含"d",那么我希望它返回一个空字符串。

对于任何给定的行,我都可以使用以下伪公式:

=IF(REGEXMATCH(A<row>, "d"), COUNTIF(A<row>, "*d*"), "")
Name                   D-List
---------------------  ------
Arnold Schwarzenegger  1
Bruce Willis    
Dolph Lundgren         2
Dwayne Johnson         3
Jason Statham   
Keanu Reeves    
Samuel L. Jackson   
Sylvester Stallone  
Vin Diesel             4

我可以使用INDIRECT 和ROW 将其转换为可以在行之间复制的表达式:

=IF(REGEXMATCH(A2, "(?i)d"), COUNTIF(INDIRECT("A2:A" & ROW(A2)), "*D*"), "")
Name                   D-List
---------------------  ------
Arnold Schwarzenegger  1
Bruce Willis    
Dolph Lundgren         2
Dwayne Johnson         3
Jason Statham   
Keanu Reeves    
Samuel L. Jackson   
Sylvester Stallone  
Vin Diesel             4

但是,如果我尝试将其粘贴在 ARRAYFORMULA 中,则不起作用。

=ARRAYFORMULA(IF(REGEXMATCH(A2:A, "D"), COUNTIF(INDIRECT("A2:A" & ROW(A2:A)), "*D*"), ""))
Name                   D-List
---------------------  ------
Arnold Schwarzenegger   
Bruce Willis    
Dolph Lundgren         1
Dwayne Johnson         1
Jason Statham   
Keanu Reeves    
Samuel L. Jackson   
Sylvester Stallone  
Vin Diesel             1

我错过了什么?

【问题讨论】:

    标签: regex if-statement google-sheets google-sheets-formula array-formulas


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(IF(
     REGEXMATCH(A2:A, "(?i)d"), COUNTIFS(
     REGEXMATCH(A2:A, "(?i)d"), 
     REGEXMATCH(A2:A, "(?i)d"), ROW(A2:A), "<="&ROW(A2:A)), ))
    

    【讨论】:

    • 不错。可以简化一点:=ARRAYFORMULA(IF(REGEXMATCH(A2:A10,"(?i)d"), COUNTIFS(A2:A10,"*d*",ROW(A2:A10),"&lt;="&amp;ROW(A2:A10)),))
    • 成功了!我没有意识到COUNTIFS 是一回事。 ?感谢您的帮助!
    • @TheMaster 感谢您的简化!
    猜你喜欢
    • 2020-08-29
    • 2021-07-25
    • 2015-03-21
    • 2021-02-05
    • 2013-10-14
    • 2019-12-04
    • 2019-04-30
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多