Excel 这个产品花的时间太长了

Excel 这个产品花的时间太长了,excel,sumifs,sumproduct,Excel,Sumifs,Sumproduct,我有以下数据:- 这就是我想要实现的目标:- 通过将客户选择为“ABC”,相应金额将显示在1月至6月 我可以通过使用SUMPRODUCT来实现这一点,但由于我的数据超过10K行,因此需要很长时间来处理。有没有更有效的方法使用SUMIFS等来实现这一点 谢谢试试下面的配方- =SUMIF($A$2:$A$9,$B$14,INDEX($B$2:$G$9,,MATCH($A15,$B$1:$G$1,0))) 如果它们为真日期,则尝试以下数组公式。Excel365不需要数组条目 =SUMIF($

我有以下数据:-

这就是我想要实现的目标:-

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

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


谢谢

试试下面的配方-

=SUMIF($A$2:$A$9,$B$14,INDEX($B$2:$G$9,,MATCH($A15,$B$1:$G$1,0)))

如果它们为真日期,则尝试以下数组公式。Excel365不需要数组条目

=SUMIF($A$2:$A$9,$B$14,INDEX($B$2:$G$9,,MATCH(MONTH($A15),MONTH($B$1:$G$1),0)))
按CTRL+SHIFT+ENTER键计算公式,因为它是一个数组公式

编辑:如果您的数据结构与提供的样本相同,则下面的公式将更有效


这里有一个函数,您可以将它粘贴到示例中的L2并复制到12月份

=SUMIF(INDEX(Data,0,1),$L$1,INDEX(Data,0,MATCH(K2,Months,0)))
如您所见,它有两个命名范围,
数据
月份

  • Data
    由所有数据行和列组成,在您发布的示例中为A1:G9。我认为您需要使这个范围动态化,这意味着它应该在添加或删除数据时自动调整大小。我们可以这样做,这是公式,但这是没有效率的。因此,您可以在名称声明中执行此操作。如果你需要帮助,请不要在这里问。这是一个不同的主题:“动态命名范围”
  • 月份
    的列数应与“数据”的列数相同,但不限于12列。重要的是,它应该在与
    Data
    相同的列中开始,并且它的第一个字段不应该包含可能成为函数搜索标准的日期
  • 列K也可以有12个以上的列。在我的设置中,我使用了自定义数字格式
    mmm
    。因此,1/1/21和1/1/22将以相同的方式显示,但匹配功能可以将它们区分开来


    我在B1中放置了一个开始日期,
    =EDATE(B1,1)
    在C1中,我将其复制到右侧。类似地,K2具有向下复制的
    =B1
    ,K3
    =EDATE(K2,1)
    。这确保了列标题和行标题对齐。

    我认为SUMIFS()是正确的方法。请尝试一下,如果不起作用,请发布您的努力。可以分享公式吗?B1:G1中有什么?日期还是文字?类似地,K3::K14中有什么?这些是日期。@Bob您使用哪个版本的excel?太好了,它比SUMPRODUCT工作得更好。是否可以选择整行而不是预设它,例如$A$2:SA$9到A:A或$B$2:$G$9到B:G?“我的数据有很多行&每天都在变化。@Bob如果您的数据结构良好,那么您可以更高效地处理它。请参阅我编辑的答案。如果您发现它工作,请将其标记为已回答(勾号)。尝试过,但如果我更改mth,则无效-而不是1月到6月,现在是6月到1月。数字保持不变。您可以通过google drive共享示例工作簿。它不会显示正确的输出。它显示Jan=0(正确值为99)、Feb=99(正确值为100)、Mar=100(正确值为104)、Apr=104(正确值为107)。确实如此。如果显示错误,则说明您没有正确设置。我猜您的
    Months
    范围不是从A1开始的,但是您可以使用=SUM(数据,0,2))进行测试,其中2是数据列,并且=MATCH(K2,Months,0)应该返回要从中求和的列数。通过这种方式,您可以找到更正设置的位置。
    =SUMIF(INDEX(Data,0,1),$L$1,INDEX(Data,0,MATCH(K2,Months,0)))