Google sheets 在Google工作表中使用分层数据

Google sheets 在Google工作表中使用分层数据,google-sheets,Google Sheets,如果我在谷歌表格中有分层数据,如下面示例中的a列和B列,我如何编写一个公式,用A1中的“父”值和B列中的“子”值的乘积填充C列中的相应单元格。例如,C8中的公式,将在A列中向上搜索,直到在A6中找到值5,然后将其乘以B8中的值8 显然,我试图避免在A列的每一行中都放置“父”值。一种方法是将B列中的每个值与一个类别或键关联,该类别或键可用于在单独的表中查找A的值。这在某种程度上对其进行了抽象,因此您可以更改A列的值,而无需在每一行中都包含这些值,但不存在空单元格 i、 e 和查找表: 在C栏

如果我在谷歌表格中有分层数据,如下面示例中的a列和B列,我如何编写一个公式,用A1中的“父”值和B列中的“子”值的乘积填充C列中的相应单元格。例如,C8中的公式,将在A列中向上搜索,直到在A6中找到值5,然后将其乘以B8中的值8


显然,我试图避免在A列的每一行中都放置“父”值。

一种方法是将B列中的每个值与一个类别或键关联,该类别或键可用于在单独的表中查找A的值。这在某种程度上对其进行了抽象,因此您可以更改A列的值,而无需在每一行中都包含这些值,但不存在空单元格

i、 e

和查找表:

在C栏

= VLOOKUP($A1, <range for category lookup table>, 2, 0) * $B1
=VLOOKUP($A1,2,0)*$B1
(然后可以填写此公式)


或者,我认为您可以使用公式来查找a列中最后一个非空行,或者沿着这些行查找,但这与其说是一种正确的数据结构,不如说是一种黑客行为。表的设计并不像您所展示的那样以分层方式使用。但它们可以很容易地使用我建议的技术来表示分层数据。

在数组公式上摆弄和移动我的记忆后,我想出了如何得到我想要的结果。下面是我使用的公式:

=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或一个行号。当在数组公式和单元格区域中用作输入时,得到的是一个真/假值列表,以及为输入区域中的每个单元格计算的行号。将MAX括起来,它将返回这两个列表中的位置,其中IF(ISNUMBER())为TRUE,row()返回的行号为最高,有效地从范围的底部进行搜索

当将公式拖动到其他单元格中时,要搜索的范围(在本例中为$B$2)中第一个元素的绝对引用会将范围固定到相同的起始位置,而要搜索的范围(在本例中为$B2)的下限会垂直增长


最后,索引获取输入范围、上面返回的行号(-1行,因为标题)和列位置(1,因为只有一列)以返回所需的值。

谢谢,我不敢相信我忽略了这一点。我的数据也有这样的分类。谢谢!谢谢,我想我有点过火了。你的解决方案的第一部分对我来说不是100%。由于数据的布局方式以及“类别”与数据的关联方式,当我将公式扩展到整个范围时,它不会产生一致的结果(当然记得使用绝对引用)。VLOOKUP不起作用,因为它从范围的顶部向下搜索,似乎需要一个特定的搜索键才能工作(通配符“*”在找到-any-数值时无法返回true)。我记得不久前在Excel中使用数组公式做过类似的事情,但我不记得是怎么做的。这对我休了一年的假很好:P如果早上我没有收到任何其他回复,我会将你的回复标记为已接受,然后继续我的生活。再次感谢!为什么需要通配符?无论如何,如果找不到匹配的
VLOOKUP
返回
#N/A
我需要一个通配符,因为我要搜索的东西不是常数。我需要一种方法让VLOOKUP查找任何数字(甚至不是空白单元格的东西),我认为使用通配符可能会满足这一点,但事实并非如此。为了有效地从范围的底部到顶部进行搜索,我确实使用数组公式实现了这一点。我已经在上面的评论中发布了解释。