在Google表格列中计算值下的值

时间:2018-05-28 16:21:40

标签: excel excel-vba excel-formula google-sheets google-spreadsheet-api vba

我正在尝试在一个有几千行的电子表格中创建一个公式。我正在努力寻找能够找出父母( x )有多少孩子( y )的部分 - 计算价值直到价值变化。
我尝试过使用=IF(A2=OFFSET(A2,-1,0),OFFSET(B2,-1,0)+1,1),目前只计算儿童用品 最终目标是根据计数输出所有儿童的价值。

    +---+------+-------+-------+--------------+--+
    | 1 | Type | Count | Value | Child Values |  |
    +---+------+-------+-------+--------------+--+
    | 2 | x    |     1 | A     | B            |  |
    | 3 | y    |       | B     |              |  |
    | 4 | x    |     2 | C     | D,E          |  |
    | 5 | y    |       | D     |              |  |
    | 6 | y    |       | E     |              |  |
    | 7 | x    |     1 | F     | G            |  |
    | 8 | y    |       | G     |              |  |
    +---+------+-------+-------+--------------+--+

因此,如果 x 有2个子节点,则公式将输出其旁边的下2个单元格的值(子值)。父母最多可以有8个孩子,并且需要根据计数获取一些下一个单元格值 如果没有Excel VBA,这第二部分是否可行?感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这可能不是最好的答案,但确实避免了VBA。您必须在列表底部有一个没有子项的虚拟 x

您的计数公式为:

=IF(A2="y","",MATCH("x",INDEX($A:$A,ROW()+1):INDEX($A:$A,COUNTA($A:$A)),0)-1)  
  • INDEX($A:$A,ROW()+1):INDEX($A:$A,COUNTA($A:$A)会设置从下一行到列表末尾的引用,前提是列A中每个单元格中的A1到列表末尾都有一个值。
  • MATCH("x",....,0)将返回下一个 x 所在的引用范围中的行号。从中减去一个将给出 x 的子项数。
  • IF(A2="y","",.......)确保计数仅显示在 x 行上。

由于您最多只有8个孩子,因此您可以使用此公式返回子值。

=IF(B2="","",CONCATENATE(IF(B2>=1,C3,""),IF(B2>=2," ," & C4,""),IF(B2>=3," ," & C5,""),IF(B2>=4," ," & C6,""),IF(B2>=5," ," & C7,""),IF(B2>=6," ," & C8,""),IF(B2>=7," ," & C9,""),IF(B2>=8," ," & C10,"")))  

executed on each connection