如果我在Google表格中有分层数据,如下例中的A列和B列所示,如何编写一个公式,用C中“父”值的乘积填充C列中的相应单元格,例如,C8中的公式将在A列中向上搜索,直到它在A6中找到值5,然后将其乘以8,即B8中的值。
显然,我试图避免将“父”值放在A列的每一行。
答案 0 :(得分:1)
在摆弄并在ArrayFormulas上慢慢记忆之后,我想出了如何得到我想要的结果。这是我使用的公式:
=ArrayFormula(index($B$2:$B2,MAX(IF(ISNUMBER($B$2:$B2),ROW($B$2:$B2)))-1,1))
(注意:第1行包含标题)
编辑:解释我是如何达到此解决方案的:
通常,IF(ISNUMBER(单元格))和ROW(单元格)将分别返回TRUE / FALSE或行号。当在数组公式和一系列单元格中用作输入时,您得到的是一个TRUE / FALSE值列表,以及为输入范围中的每个单元格计算的行号。围绕它包裹MAX,它将返回IF(ISNUMBER())为TRUE的那两个列表中的位置,并且ROW()返回的行号最高,从范围的底部有效搜索。
要搜索的范围中的第一个元素的绝对引用(在这种情况下为$ B $ 2),在将公式拖动到其他单元格时,将范围锚定到相同的起始位置,而范围的下限(in这种情况下,要搜索的$ B2)会垂直增长。
最后,INDEX获取输入范围,由上面返回的行号(由于标题为-1行)和列位置(1,因为只有一列),以便返回所需的值。
答案 1 :(得分:0)
您可以这样做的一种方法是将B列中的每个值与可用于在单独的表中查找A的值的类别或键相关联。这有点抽象,因此您可以更改A列的值,而不必在每一行中都有它们,但是没有空单元格。
即。
和查找表:
在C栏
= VLOOKUP($A1, <range for category lookup table>, 2, 0) * $B1
(然后这个公式可以填写)
More on VLOOKUP in Google Sheets here
或者我认为您可以使用公式来查找A列中的最后一个非空行,或者沿着这些行查找某些内容,但这不仅仅是构建数据的正确方法。表并不是真正设计为像你所展示的那样以分层方式使用。但他们可以使用我建议的技术轻松地表示分层数据。