SUMPRODUCT 花费的时间太长

SUMPRODUCT is taking way too long

我有这个数据:-

这就是我想要实现的:-

选择客户为“ABC”,相应金额将在1月至6月显示。

我可以通过使用 SUMPRODUCT 来实现这一点,但由于我的数据超过 10K 行,因此需要很长时间才能处理。有使用 SUMIFS 等更有效的方法吗?

谢谢

试试下面的公式-

=SUMIF($A:$A,$B,INDEX($B:$G,,MATCH($A15,$B:$G,0)))

如果它们是真实日期,请尝试下面的数组公式。 Excel365 不需要数组输入。

=SUMIF($A:$A,$B,INDEX($B:$G,,MATCH(MONTH($A15),MONTH($B:$G),0)))

CTRL+SHIFT+ENTER 计算公式,因为它是一个数组公式.

Edit: If your data is structed as like your provided sample then below formula will more efficient.

=SUMIFS(INDEX(B:G,,ROW($A1)),A:A,$J)

这是一个函数,您可以将其粘贴到示例中的 L2 并向下复制到 December。

=SUMIF(INDEX(Data,0,1),$L,INDEX(Data,0,MATCH(K2,Months,0)))

如您所见,它有 2 个命名范围,DataMonths

  1. Data 包含所有数据行和列,在您发布的示例中为 A1:G9。我想你会想要使这个范围动态化,这意味着它应该在你添加或删除数据时自动调整大小。公式可以做到这一点,但效率不高。因此,您在名称声明中这样做。如果您需要帮助,请不要在这里询问。这是一个不同的主题:“动态命名范围”。
  2. Months 的列数应与 'Data' 一样多,不限于 12。重要的是它应与 Data 在同一列开始,并且其第一个字段不应保留可能成为函数搜索条件的日期。

K 列也可以超过 12 列。在我的设置中,我使用了自定义数字格式 mmm。因此 1/1/21 和 1/1/22 将显示相同,但​​ MATCHG 函数可以区分它们。

我将开始日期放入 B1,将 =EDATE(B1,1) 放入 C1,并将其复制到右侧。同理,K2有=B1,K3有=EDATE(K2,1)复制下来。这可确保列和行标题对齐。