如果我在Google表格中有分层数据,如下面示例中的A和B列所示,我如何编写一个公式,该公式将用A1中的"parent“值与B列中的"child”值的乘积填充C列中的相应单元格。例如,C8中的公式将在A列中向上搜索,直到在A6中找到值5,然后将其乘以8,即B8中的值。
显然,我试图避免在A列的每一行中都放入"parent“值。
发布于 2017-01-11 08:43:12
在ArrayFormulas上闲逛了一段时间后,我想出了如何得到我想要的结果。下面是我使用的公式:
=ArrayFormula(index($B$2:$B2,MAX(IF(ISNUMBER($B$2:$B2),ROW($B$2:$B2)))-1,1))
(注:第1行包含标题)
编辑:解释我是如何得出这个解决方案的:
通常,IF(ISNUMBER(cell))和ROW(cell)将分别返回TRUE/FALSE或行号。当在数组公式和单元格区域中用作输入时,您得到的是TRUE/FALSE值的列表,以及输入区域中每个单元格的行号。对MAX进行包装,它将返回这两个列表中的位置,其中IF(ISNUMBER())为TRUE,ROW()返回的行号是最高的,有效地从范围的底部开始搜索。
将公式拖入其他单元格时,要搜索的区域(在本例中为$B$2)中第一个元素的绝对引用会使该范围锚定在相同的起始位置,而要搜索的区域(在本例中为$B2)的下限将垂直增长。
最后,索引采用输入范围、上面返回的行号(由于标题为-1行)和列位置(1,因为只有一列),以返回所需的值。
发布于 2017-01-11 04:52:56
可以这样做的一种方法是将列B中的每个值与一个类别或键相关联,这些类别或键可用于在单独的表中查找A的值。这在某种程度上对其进行了抽象,因此您可以更改A列的值,而不必将它们放在每一行中,但没有空单元格。
即
和查找表:
在C栏
= VLOOKUP($A1, <range for category lookup table>, 2, 0) * $B1
(然后可以向下填充此公式)
More on VLOOKUP in Google Sheets here
或者,我假设您可以使用公式来查找列A中的最后一个非空行,或者沿着这些行的内容,但这更像是一种技巧,而不是一种正确的数据结构方式。表的设计并不像您所展示的那样以分层的方式使用。但它们可以很容易地使用我所建议的技术来表示分层数据。
https://stackoverflow.com/questions/41577927
复制相似问题