强制SUMPRODUCT忽略文本值
我有一个列表,我想从中提取一定的值。 该表的date为标题,第一列中的每个单元格表示不同的产品types。 使用SUMPRODUCT
公式如下所示,而不是HLOOKUP
,我想获得特定产品可用的单位数量。
我的问题是,我不知道我需要多less列,因为我将每月导入每个产品的单位数量。 因此,我将需要使用整行而不是单元格名称作为范围,如下面的公式所示。
但是,select第1行:5包含数据中的行标题,并生成#VALUE!
错误。
如何强制SUMPRODUCT
忽略A:A的文本值,然后求和剩下的单元格,同时将行保持为范围而不是单元格名称?
ABCDE 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))
如果你把你的头文件和你的数据混合在一起,那么你将会使你的生活变得非常复杂。
你可以做的一件事是让你的范围足够大,不要担心溢出。 例如,将它们水平延伸到工作表中最后一个可能的列( XFD
):
=SUMPRODUCT(--("Product 1"=$A$2:$A$4) *--(DATE(YEAR(TODAY()),MONTH(TODAY()),1)=B1:XFD1) *(B2:XFD4))
如果事先不知道有多less产品,可以垂直做类似的事情 – 扩展到1,000或100,000行,或者你知道覆盖最坏的情况(不能超过1,048,756)。
另一件事:你有效地使用SUMPRODUCT
来模拟INDEX
和MATCH
的行为。 这些实际上是用于这种查找任务的function。 ( 忘记VLOOKUP
和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))