【问题标题】:Excel: SUMIF depending on number in fieldExcel:SUMIF 取决于字段中的数字
【发布时间】:2009-12-01 00:02:41
【问题描述】:

嗨,你们这些了不起的人

更新

你知道吗,我应该让你知道我实际上是在尝试用数字而不是字母来做到这一点。例如,我有一个值为 225566 的字段,我正在尝试挑选其中包含 55 的字段。直到现在我才意识到这可能会产生巨大的影响

A 列 | B栏|
225566 | 2
125589 | 3
95543 | 2

(以下是我首先提出的问题,后来意识到我没有问对正确的问题。) *假设我有一张桌子

A 列 | B栏|
AABBC | 2
AADDC | 3
ZZBBC | 2

现在我怎样才能为 A 列中包含 BB 的字段的那些行获取 SUMIF?假设有数百行。我意识到我必须从文本到列的完成方式中从概念上借用一些东西。但我想知道是否有人会知道我怎么能做到这一点。非常感谢。*

【问题讨论】:

    标签: excel split


    【解决方案1】:

    由于您尝试对数字执行此操作,因此您需要使用数组公式。

    如果您的测试值在 A3:A5 中,而要求和的值在 B3:B5 中,这将起作用:

    =SUM( IF(ISERROR(FIND("55", TEXT(A3:A5,"#"))), 0, 1) * B3:B5 )
    

    输入数组公式时,请使用 Ctrl-Shift-Enter 而不是直接按 Enter。

    这将求和值与 IF() 语句中的 0 或 1 的乘积相加,该语句测试每个测试值在转换为文本后是否包含“55”。

    【讨论】:

    • 嘿,理查德,你能解释一下井号的重要性吗?非常感谢。
    • TEXT() 函数需要两个参数,第二个是用于将数字转换为文本的模板。井号是一个格式化字符串,指示该值应呈现为数字。更多信息:office.microsoft.com/en-us/excel/HP052093131033.aspx
    • 我不知道为什么这对我不起作用。无论如何我可以上传我的文件吗?谢谢
    • 它有效!我正在按 shift-enter 而不是 ctrl-shift-enter。非常感谢 docmax、richardtallent、benmccormack、civic。
    • 嘿,Richard,如果我想计算而不是求和,我应该怎么做?我试过这个,但它没有用。如果可能的话请让我知道。谢谢 =COUNT( IF(ISERROR(FIND("55", TEXT(A3:A5,"#"))), 0, 1) * B3:B5 )
    【解决方案2】:

    我认为您需要一个矩阵/数组公式来执行此操作:

    {=SUM(IF(ISERROR(FINDEN("55";A2:A4;1));0;1))}

    奇怪的括号 {} 表示它是一个矩阵公式,您可以在编辑公式时按 SHIFT+CTRL+RETURN 而不是 Return 来获取它们。

    这个公式将在 A2:A4 范围内循环,检查它是否在其中找到“55”,如果找到,则将总和加 1。

    Google 数组/矩阵公式,因为它们不是自我解释的。

    最好的

    一月

    【讨论】:

    • 一月 非常感谢。您为我提供了计算一列具有数值的次数的解决方案,该数值可能包含特定的数字。这将是我的下一个问题。但是当我粘贴你的公式时它对我不起作用,我认为存在一些小的语法问题。我将分号更改为逗号,它起作用了 =SUM(IF(ISERROR(FIND("55", A2:A4, 1)), 0, 1))。非常感谢
    【解决方案3】:

    在 Excel 2003 和 2007(可能还有更早的版本,我无法测试)中,您可以在匹配中使用 * 作为通配符。例如,使用您的样本数据集 C1 到

    =SUMIF(A1:A3,"*BB*",B1:B3)
    

    您应该会看到值 4。

    【讨论】:

    • 你知道吗,我应该让你知道我实际上是在尝试用数字而不是字母来做到这一点。例如,我有一个值为 225566 的字段,我正在尝试挑选其中包含 55 的字段。直到现在我才意识到这可能会产生巨大的影响。
    【解决方案4】:

    创建第三列(ColumnC)并将这个公式放入其中:

    =Text(A2,0)
    

    向下拖动该列以完成您的列。这会将值格式化为文本。接下来,使用 DocMax 解释的 SUMIF,除了不同的列:

    =SUMIF(C1:C3,"*BB*",B1:B3)
    

    您这样做的原因是因为在使用*BB*SUMIF 进行比较时,您需要读取Text 值,而不是Number 值。好问题。

    【讨论】:

    • 感谢您的帮助本。但由于某种原因,这种方法对我不起作用,正如我在对richardtallent 的评论中提到的那样。期待大家的继续帮助!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2021-09-21
    • 1970-01-01
    • 2013-12-27
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多