【问题标题】:How do I get the count of non matching cells in a row between two sheets?如何获得两张纸之间连续不匹配单元格的数量?
【发布时间】:2019-08-30 12:56:42
【问题描述】:

我有两张表,表 A 包含一个像这样的真值表:

    A B C D E
Foo T F F T F
Bar T F F F F

工作表 B 包含另一个表格:

A B C D E
T F F T F

我需要在表 A 中添加一列,计算有多少单元格与工作表 B 中的相应单元格匹配,如下所示:

Foo T F F T F 2
Bar T F F F F 1

我能想到的最好的第一个计数单元是

=COUNTIF(B2:F2,B2:F2=INDIRECT("sheet-b!A2:E2"))

但这给了我0,即使它应该是 2。

编辑: 我能够想出这个,它正确地计算了不同单元格的数量:

=SUM(ARRAYFORMULA(IF(B2:F2=INDIRECT("sheet-b!A2:E2"),1,0)))

接下来我想要添加一个 AND 语句,如果匹配或 sheet-b 单元格为 F,则计算单元格:

=SUM(ARRAYFORMULA(IF(AND("F"=INDIRECT("sheet-b!A2:E2"),B5:F5=INDIRECT("sheet-b!A2:E2")),1,0)))

但是,我似乎无法在此公式中使用 AND 语句。甚至以下给出的总和为零:

=SUM(ARRAYFORMULA(IF(AND(TRUE,B2:F2=INDIRECT("sheet-b!A2:E2")),1,0)))

怎么会?

Edit2Link to example spreadsheet

【问题讨论】:

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


    【解决方案1】:

    如何获取两张纸之间连续不匹配单元格的计数

     =ARRAYFORMULA(IF(LEN(A2:A), 
     MMULT(IF(B2:F='sheet-b'!A2:E2, 0, 1), TRANSPOSE(COLUMN(B2:F2)^0)), ))
    

    【讨论】:

    • 非常感谢您的帮助。我不得不稍微调整我的查询(就像我在更新中写的那样),为了得到我正在寻找的结果,我需要弄清楚为什么 =SUM(ARRAYFORMULA(IF(AND(TRUE,B2:F2=INDIRECT("sheet-b!A2:E2")),1,0))) 没有达到我的预期。
    • ANDORARRAYFORMULA 中不受支持。您需要使用*/+ 将其转换为 0/1 逻辑
    【解决方案2】:

    尝试:

    =ARRAYFORMULA(IF(A1:A<>"", COUNTIFS(TRIM(
     TRANSPOSE(QUERY(TRANSPOSE(Sheet2!J1:N),,999^99))),
     TRANSPOSE(QUERY(TRANSPOSE(B1:F)       ,,999^99))), ))
    

    【讨论】:

    • 这不起作用(在修改查询以匹配我上面发布的示例表后,我得到全零)
    • 此解决方案将行值视为单独的集合,而不是一组行中的独立值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多