强制SUMPRODUCT忽略文本值

时间:2014-10-28 09:14:47

标签: excel excel-formula

我有一个列表,我想从中提取某个值。该表将日期作为标题,第一列中的每个单元格表示不同的产品类型。使用如下所示的SUMPRODUCT公式代替HLOOKUP,我希望获得特定产品的可用单位数量。

我的问题是我事先并不知道我需要多少列,因为我将每月导入每个产品的单位数量。因此,我需要使用整行而不是单元格名称作为范围,如下面的公式所示。

但是,选择行1:5会在数据中包含行标题,并导致#VALUE!错误。

如何强制SUMPRODUCT忽略A:A的文本值并将剩余单元格相加,同时将行保持为范围而不是单元格名称?

         A              B                 C                 D                 E

1    Product Name   Jul-2014          Aug-2014          Sep-2014          Oct-2014

2    Product 1        1,000             1,500             3,000               750

3    Product 2        1,500             1,000              500               1,500

4    Product 3         250              1,500             1,000               800

公式:

=SUMPRODUCT(--("Product 1"=$A$2:$A$4)*--(DATE(YEAR(TODAY()),MONTH(TODAY()),1)=1:1)*(2:4))

返回#VALUE!。 (应返回750,即2014年10月产品1的值。)

下面的公式确实会返回正确的结果,但它要求我事先知道范围的大小,因此没有好处:

=SUMPRODUCT(--("Product 1"=$A$2:$A$4)*--(DATE(YEAR(TODAY()),MONTH(TODAY()),1)=B1:E1)*(B2:E4))

1 个答案:

答案 0 :(得分:1)

如果您将标题与数据混合在一起,那么您将使您的生活变得非常复杂。

你可以做的一件事就是让你的范围足够大,不要担心它们会溢出。例如,将它们水平延伸到工作表中的最后一列(XFD):

=SUMPRODUCT(--("Product 1"=$A$2:$A$4)
    *--(DATE(YEAR(TODAY()),MONTH(TODAY()),1)=B1:XFD1)
    *(B2:XFD4))

如果你事先不知道你将拥有多少产品,可以做垂直相似的事情 - 扩展到1000行或100,000行,或者你知道的事情会覆盖你最糟糕的情况(不能更高)超过1,048,756)。

另一件事:您有效地使用SUMPRODUCT来模仿INDEXMATCH的行为。这些实际上是用于此类查找任务的函数。 (Forget about VLOOKUP and HLOOKUP.

=INDEX($B$2:$E$4,
    MATCH("Product 1",$A$2:$A$4,0),
    MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),$B$1:$E$1,0))