【问题标题】:Changing cell reference for a SUMIF criterion?更改 SUMIF 标准的单元格引用?
【发布时间】:2013-09-16 03:41:12
【问题描述】:

我试图告诉 Excel 根据每行中包含值的最后一个单元格更改 SUMIF 公式的单元格引用。现在,我知道我可以编写一个嵌套的 if 语句来为我做这件事,但是它太笨拙了,不能成为一个长期的解决方案。

例子:

在单独的报告中,此列表中的每个人都有多行记录他们的每日销售额。在小范围内,我会简单地写一个SUMIF,将 A2、B3 和 C4 用作标准。规模要大得多,所以我目前的解决方案是写出一个逻辑检查,其中包含SUMIF 公式。

在这种情况下,E2 中的公式为:

=IF(C2="",if(B2="",SUMIF('range',A2,'range'),sumif('range',B2,'range')),sumif('range' ,C2,'范围'))

是否有不同的方法告诉 Excel 使用每行中找到的最后一个值运行 SUMIF

我希望我可以对每一行使用 COUNTA,然后让 SUMIF 公式使用 COUNTA 值来更改标准单元格引用。我在这里遗漏了一些东西。

【问题讨论】:

    标签: excel excel-formula worksheet-function sumifs vba


    【解决方案1】:

    =SUMIF('range',INDEX(A2:C2,MATCH("zzzzz",A2:C2)),'range')

    似乎值得一试。

    编辑太长,无法发表评论:

    我真的不知道 =MATCH() 是如何工作的,但认为它是在搜索时从左到右遍历。当它找不到匹配项时,它恰好一直在查看最后一个条目,并且(方便!)提供了它。所以关键是寻找一些不会被发现的东西。

    对于人名,我选择了“zzzzz”,因为它不太可能出现。对于数字,理论上可以达到 9.99999999999999E+307,因此有些人使用它(例如一小时前 Formula to get the first cell with a numerical value from a selection?),但我更喜欢 googol(1E+100),它看起来足够大,更短 - 更容易要记住,即使几个9s 或多或少不会有任何区别,也不太可能在+ 之后有几个整数。

    【讨论】:

    • 这是有效的,我不知道如何。您介意解释一下 match 函数如何影响正在查找的单元格吗?顺便说一句,谢谢,这很棒。
    • 您也可以对文本使用 LOOKUP 方法,例如=LOOKUP("zzzz",A2:C2) - "bignum" 9.99999999999999E+307 的正常等价是 "bigtext" =REPT("z",255) 但 "zzzz" 通常就足够了
    • 这些工作中的任何一项都是excel的“怪癖”。在带有 TRUE/1/省略最后一个参数的 LOOKUP 或 MATCH/VLOOKUP 中,excel 使用“二分搜索”,例如使用 =LOOKUP(100,A1:Y1) excel 期望 A1:Y1 升序排序 - 因为它可以查看中间值,即 M1 并查看它是否 > 100 - 如果是这样,它可以丢弃后面的值,如果不是,它可以丢弃 A1:L1 值,所以 LOOKUP 很快,因为它只需要检查有限数量的值.....但是当查找值是时“欺骗”函数总是返回最后一个值'没找到.......
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2013-11-17
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多