Excel '10 公式根据两个数据点的交集查找并求和一行。(即名称(行)、月份(列)

Excel '10 公式根据两个数据点的交集查找并求和一行。(即名称(行)、月份(列)

我需要一个 Excel 2010 数组公式,该公式将采用 2 个给定的数据点,例如“名称”(行)和“月份”(列),并根据数据表中这两个点的交点返回行的总和。(抱歉,我无法插入 JPG。)例如,我的表的“名称”参考范围是 A2:A15,相应的“月份”范围是 B1:M1。表本身包含的数据将是按名称划分的月销售额。

所需公式将返回指定“名称”和“月份”交集之间一行中包含的所有值(月销售额)的“YTD”总和,从而有效地根据指定的“月份”返回给定“名称”的 YTD 值。

对于我的公式(位于表格外部),我的“名称”数据点引用是单元格“B20”,我的“月份”数据点引用是单元格“C20”。 (我希望这有意义!!)

我尝试过多种 SUM(INDEX(MATCH 和 SUM(OFFSET(MATCH 公式的变体,但都无济于事。困难在于必须解决两个数据点引用。:(

答案1

您可以使用以下公式:

SUM(IF(A2:A5=B20,OFFSET(B2,0,0,4,MATCH(C20,B1:M1,0))))

然后按Ctrl+Shift+Enter告诉 Excel 这是一个数组公式。

答案2

B1:M1 到底包含什么?文本值(例如“Jan”、“Feb”等)还是日期?

如果它们是日期你可以SUMPRODUCT像这样使用

=SUMPRODUCT((A2:A15=B20)*(B1:M1<=C20),B2:M15)

或者对于文本值尝试

=SUMPRODUCT((A2:A15=B20)*((1&B1:M1)+0<=(1&C20)+0),B2:M15)

答案3

我更喜欢使用MATCH()OFFSET()和列作为终点,使用行作为起点(因为你知道根据定义它是一月,所以你可以使用 1 而不是函数):

=SUM(OFFSET(A1,MATCH(B20,A2:A15,0),1):OFFSET(A1,MATCH(B20,A2:A15,0),MATCH(C20,B1:E1,0)))

并将SUM()范围加起来。

为什么要使用MATCH()? 更不用说这是一个好习惯,记住您可以通过这样做来消除行或列插入/删除的影响,而且,它还允许您使用可用于查找的自然值:行和列标题。

如果需要,您可以“改进”它,方法是用公式替换我提到的“1”,使其始终从 1 月开始,公式MATCH()要求将开始月份作为第三个参数,与 B20 和 C20 配合使用。然后,通常可以将其设置为“1 月”,但只要您希望报告 4 月至 10 月这样的时间段,就可以随时更改它。

当然,如果标题中除了文本之外还有其它内容,那么请调整日期标题的处理方式。

现在你不需要使用 {CSE} 条目,但在 2010 年就需要了……因为我相信SUM()它不是能够在没有 {CSE} 的情况下评估数组的函数之一。不过我不太确定。无论如何,使用 {CSE} 不会有任何负面影响,因为结果在单个单元格中,所以不会出现令人讨厌的情况。

因此,随着时间的推移,它易于理解和维护。给出了正确的答案。一个简单的 Excel 构建器还想要什么?

相关内容