答案1
对 SUMIFS 求和:
=SUMPRODUCT(SUMIFS(Sheet1!B:B,Sheet1!A:A,A2:A5))
这将迭代膳食的各个部分,并对A2:A5
SUMIFS 的输出进行求和。
答案2
使用 B 列通过 vlookup 获取卡路里计数,然后在列底部将其相加。
进餐后 B 细胞:
=vlookup(A2,$Sheet1!A:B,2,0)
然后对该列进行简单求和:
=总和(B2:B5)
你上面的功能可能通过使用 cntrl-shift-enter 来完成它并将句点更改为感叹号,将其作为数组函数工作。(未经测试)
答案3
在我的 Excel 版本中,SUM()
运行良好(版本 2010(Build 13328.20292 Click-to-Run))。
然而,我无法测试这一点,这可能仅仅是因为这个版本具有该SPILL
功能。
但是……那只是意味着您需要 {CSE} 或一个假设数组的函数,例如SUMPRODUCT()
(其他答案正确使用)。然而……
当我使用它时,我必须使用数组作为其中的第二个因子。不能使用简单的 1 甚至 {1},因为VLOOKUP()
(除了不“向左看”之外,它不值得被诽谤)正在使用输入数组。构建此类数组的方法多种多样,包括简单地在 {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} 中输入一个,也许可以处理多达 20 种成分。或者我们的老朋友ROW(1:LEN())
适应了这种情况,也许,COUNTA()
而不是LEN()
。除了...
看来我的版本不喜欢非 SPILL 数组,即由非 SPILL 技术生成的数组。所以它失败了。但是,可以使用一个SPILL
函数来强制执行这种情况,该函数实际上是专门为 SPILLing 构建的。
也就是说SEQUENCE()
。我使用以下内容作为上述内容的简单版本,因此单元格地址需要调整,但除此之外,它已准备好投入生产:
=SUMPRODUCT(VLOOKUP(D1:D3,A1:B3,2,FALSE), SEQUENCE(COUNTA(D1:D3),1,1,0) )
(源表为 A1:B3,菜肴为 D1:D3。)
SEQUENCE()
强制SUMPRODUCT()
返回处理数组,而不是将传统的“数组中的第一个单元格(“左上角”)”作为其唯一输入。输入在一列中,因此COUNTA()
首先是“,1”,而不是通常的相反方式。您只希望数组中有 1,因此起始值是下一个 1,并且您只希望有 1,因此最后一个参数步长值为 0。
旁注:一直很喜欢VLOOKUP()
能够使用数组。从不喜欢它只能是“一个 VLOOKUP,一个数组”(德克萨斯数组手指的座右铭……)。(因此没有数组作为输入生成多个数组作为输出:就像这里一样,除了源数据可能还包括“碳水化合物、蛋白质、脂肪、纤维、等等等等”,并且人们还想要它们的总数,所有这些都来自(现在还有LET()
,“在”)单个函数。当我写这个答案时想到了这一点,我突然想到,造成这种情况的根本原因,无论它是什么,可能是为什么像 这样的新函数XLOOOKUP()
不能产生二维输出(更不用说三维或四维)的根本原因。希望不是,因为如果这里的原因就是那里的原因,那么他们不会很快修复它!