在数组公式中使用 AND 函数

在数组公式中使用 AND 函数

我正在尝试从表中提取一些数据,但由于某些数据“混乱”,我无法SUMIFS像平常一样进行简单的操作。为了获取所需的信息,我只能使用一些数组公式。我可以使用大部分公式,但我觉得我应该能够将几个语句合并为一个,但我无法让它工作。以下是我的数据的简化版本:

A C
1 物品 数量
2 产品Apples123 一月 101
3 产品Apples234 一月 202
4 产品Cherrys111 一月 303
5 产品草莓222 一月 404
6 产品Cherrys111 二月 505
7 产品苹果345 二月 606

举个例子,我想计算一月份所有苹果的销售总额。(上述数据的期望结果是 303;即前两行的 101+202。)不幸的是,“苹果”这个名字被埋在其他一些并不总是相同的垃圾文本中,所以我不能这样做:

SUMIFS(C2:C7,A2:A7,"Apples",B2:B7,"January")

问题是“Apples”与 A 列中的内容不完全匹配。

我使用数组公式并得到以下结果:

{=IF(NOT(ISERROR(FIND("Apples",A2:A7))),C2:C7,"")}

这给了我一个如下所示的表格:

1 101
2 202
3
4
5
6
7 606

这给了我所有售出的苹果数量,但这对我只想要 1 月份售出的苹果数量没有帮助。我尝试AND()在公式中加入一个函数,如下所示:

{=IF(AND(NOT(ISERROR(FIND("Apples",A2:A7))),B2:B7="January"),C2:C7,"")}

由于没有匹配项,因此只会给我一个空列表。

到目前为止,我能做的是使用第一个数组函数创建一个匹配项列表,然后通过一个SUMIF函数将它与我的其他列表结合起来,如下所示:

这进入 G2-G7 列:

{=IF(NOT(ISERROR(FIND("Apples",A2:A7))),C2:C7,"")}

这个公式给了我我想要的结果:

=SUMIF(B2:B7,"January",G2:G7)

如果不太明显的话,我很少使用数组公式。如果有人能给我指明正确的方向,我将不胜感激。

我的方法有效,但感觉很奇怪。我觉得我应该能够压缩它,但我不知道该怎么做。

编辑:

Scott Craner 指出我可以在SUMIFS搜索中使用通配符,这给了我很大的帮助。不幸的是,我在发布电子表格时已经简化了电子表格的另一部分,我不知道该如何处理。我一直专注于产品识别,所以我删除了这一复杂性,因为我认为它是多余的。

就我而言,月份的列出方式与我展示的并不一样,只是简单的月份名称。相反,它们是日期/时间条目,例如“1/3/2022 1:55 PM”。我一直使用数组公式(如图所示)来获取商品匹配时销售数量的列表,然后我在创建 yyyy-mm 字段(例如 2022-1)的同时创建了另一个列表。然后我过去常常SUMIF将每个月的数量加起来。

我可以使用 Scott C. 提到的通配符搜索来识别具有匹配产品的行 - 效果很好。但是,我不知道如何将通配符与这样的日期一起使用。我确实尝试过使用这样的通配符,但没有成功(我假设您不能在中间字符串):

=SUMIFS(C2:C7,A2:A7,"*Apples*",'B2:B7,"*1/*/2022*")

我的日期实际上是这样的:

A C
1 物品 数量
2 产品Apples123 2022 年 1 月 3 日上午 9:21:18 101
3 产品Apples234 2022 年 1 月 19 日下午 4:02:50 202
4 产品Cherrys111 2022 年 1 月 7 日下午 4:22:36 303
5 产品草莓222 2022 年 1 月 12 日上午 8:33:49 404
6 产品Cherrys111 2022 年 2 月 10 日下午 1:42:15 505
7 产品苹果345 2022 年 2 月 10 日下午 1:37:30 606

答案1

它似乎AND()在数组公式中不起作用。(我认为这比这更微妙,我希望有人能教我这一点。)我能想到的最接近你的公式的方法是将其替换AND()*(乘法):

=SUM(IF((NOT(ISERROR(FIND("Apples",A2:A7))))*(B2:B7="January"),C2:C7,""))
        ↑                                  ↑⇑↑               ↑

但我同意另一位斯科特的观点,这=SUMIFS(C2:C7,A2:A7,"*Apples*",B2:B7,"January")是一个更好的答案。


针对你问题倒数第二段中的假设(隐含的反问),我回答道:是的,你在字符串中间使用通配符。但您不能对日期使用字符串匹配技术。

为了演示,这里有一些与您的格式相同的数据:

A C
1 物品 数量
2 1
3 婴儿床 2
4 4
5 10
6 城市 20
7 绷带 40         

下面,第二列包含公式;即,它使用同一行(下方)第一列中的搜索词(条件)来搜索上面的数据。第三列包含注释。=SUMIFS(C$2:C$7, A$2:A$7, An)

搜索词 公式结果 评论/解释
1 匹配第 2 行,猫
10 匹配第 5 行,狗
*哦* 12 匹配第 3 行和第 5 行:cot 和 dog
这类似于“*Apples*”搜索。
3 匹配第 2 行和第 3 行:cat 和 cot
d*g 14 匹配第 4 行和第 5 行:挖和狗
嗎*t* 23 匹配第 2、3 和 6 行:cat、cot 和 city
天*天* 14 与 d*g 结果相同
*天*天* 54 匹配第 4、5 和 7 行:dig、dog 和 bandage
(包含“d”后跟“g”)

附言我鼓励您使用像我这样的测试数据(1、2、4、10、20、40),而不是您使用的 1、2、3、4、5、6 序列。对于您的数据,如果您尝试一个公式并得到结果 505,您不知道它是来自第 6 行(包含 505),还是来自 101+404,还是来自 202+303。对于我的数据,如果我们得到的结果为 55,那么它只能是 1+4+10+40。

相关内容