【问题标题】:Count values under value in a Google Sheets column计算 Google 表格列中的值下的值
【发布时间】:2018-05-28 16:21:40
【问题描述】:

我正在尝试在包含数千行的电子表格中创建一个公式。我正在努力解决我需要找出父母 (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,这第二部分是否可行?感谢您的帮助!

【问题讨论】:

  • 上面的x怎么有两个孩子?它与 A、C、F 以及 B、D、E、G 相关联。您的意思是 x (D,E) 连续子值的最大数量吗?
  • x 实际上是独一无二的,我没有指出它们不同的其他列,x 只是定义它是它下的孩子的父母。

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


【解决方案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) 将设置从下一行到列表末尾的引用,前提是从 A1 到列表末尾的列 A 中的每个单元格都有一个值。
  • MATCH("x",....,0) 将返回下一个 x 出现的行号在引用范围内。减去 1 将给出 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,"")))  

【讨论】:

  • 谢谢!这解决了有问题的问题,我能够根据我的其他需求对其进行修改并解决我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
相关资源
最近更新 更多