【问题标题】:Excel, sum if a row value matches a vlookup value on another sheetExcel,如果行值与另一张纸上的 vlookup 值匹配,则求和
【发布时间】:2017-04-25 23:09:34
【问题描述】:

是否可以根据在另一张纸上检查的标准对列中的所有值求和?

我有两张纸,一张有数值,一张有制造商。我想检查制造商在另一张纸上是否有除“YES”以外的任何值,如果不等于“YES”,则求和。最终结果是表 2 上没有“YES”值的所有制造商的总数。

在下面的示例中,我试图将除 Manuf B 之外的所有内容相加,总计 1,132 美元。

到目前为止,我正在研究的公式(非功能性)是:

=sumif(vlookup(C5:C12,'SHEET 2'!E5:F8,2,false),not("YES"),B5:B12)

【问题讨论】:

    标签: excel excel-formula sumifs


    【解决方案1】:

    我觉得这样更干净一些...

    =SUM(SUMIF(C5:C12,IF(Sheet2!F5:F8<>"YES",Sheet2!E5:E8,FALSE),B5:B12))
    

    它仍然是一个数组公式,因此您必须在添加公式时按 Ctrl + Shift + Enter 而不是 Enter

    【讨论】:

    • 这行得通,但我不确定我理解为什么 sumif() 周围的 sum() 是必需的。
    • 因为Sumif实际上为每个条件返回一个值,所以需要Sum来获取单个值。更多信息请参见SUMIFS with multiple criteria and OR logic
    【解决方案2】:

    作为带有 CSE 的数组公式,

    =SUMPRODUCT(B5:B12,--ISNUMBER(SEARCH(C5:C12, TEXTJOIN(",",TRUE,IF(F5:F8<>"yes",E5:E8)))))
    

    ...或者(可能)更传统的数组公式(使用 CSE),

    =SUM(SUMIFS(B5:B12, C5:C12, TRANSPOSE(INDEX(E5:E8&IF(F5:F8="yes", CHAR(215), TEXT(,)), , ))))
    

    后一个数组公式的略简版,

    =SUM(SUMIFS(B5:B12,C5:C12,INDEX(IF(F5:F8="yes",CHAR(215),E5:E8),,)))
    

    【讨论】:

    • 那么,CSE 代表 Crtl + Shift + Enter?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2016-11-22
    • 1970-01-01
    相关资源
    最近更新 更多