Подсчитать значения по значению в столбце Google Sheets - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь создать формулу в электронной таблице, которая состоит из нескольких тысяч строк.Я борюсь с той частью, где мне нужно выяснить, сколько детей ( y ) имеет родитель ( x ) - подсчет значения до изменения значения.
Я пыталсяиспользуя =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 голосов
/ 29 мая 2018

Возможно, это не лучший ответ, но он избегает 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,"")))  

enter image description here

...