Развертывание таблицы частот в Excel в один столбец - PullRequest
5 голосов
/ 28 октября 2011

Я читал в другом месте о переполнении стека, что вопросы Excel приемлемы здесь, поэтому, пожалуйста, не раздражайтесь :) Если они должны быть в другом месте, просто дайте мне знать ...

Я разочарованпотому что я почти уверен, что раньше знал, как это сделать.

Представьте себе следующую таблицу:

Frequency       Object
3               A
2               B
4               C

В третьем столбце я хочу, чтобы Excel написал:

A
A  
A
B
B
C
C
C
C

(3 А, потому что частота А = 3)

Я почти уверен, что это можно сделать с помощью одной формулы, скопированной в третий столбец, но я не могу вспомнить, как.Есть предложения?

Ответы [ 3 ]

2 голосов
/ 01 декабря 2013

Мне понравилась формула элегантности (1), но она будет работать, только если у вас нет повторяющихся объектов (данных).

Это будет работать всегда, если у вас нет числового значения, отличного от нуля., значение в E2 Freq, значения в E3:E6 и Obj в D3:D6, формула, начинающаяся в P3

=LOOKUP(ROWS(P$3:P3)-1;SUMIF(INDIRECT("E2:E"&ROW($E$2:$E$6));">0");$D$3:$D$6)

или (и, в этом случае, в E2 может быть что угодно)

=INDEX($D$3:$D$6;IF(ROWS(L$3:L3)<=$E$3;1;1+MATCH(ROWS(L$3:L3)-1;SUMIF(INDIRECT("E3:E"&ROW($E$3:$E$6));">0"))))

Ctrl + Shift + Enter в P3 и копирование вниз

CR

1 голос
/ 31 октября 2011

В первой ячейке желаемого выходного столбца (в данном примере E1) введите

=B1

Где B1 - адрес первого объекта.В ячейку ниже (E2, здесь) введите

=IF(COUNTIF(E$1:E1,E1)=INDEX($A$1:$A$3,MATCH(E1,$B$1:$B$3,0)),
INDEX($B$1:$B$3,MATCH(E1,$B$1:$B$3,0)+1),
E1)

и заполните столько, сколько вам нужно.

1 голос
/ 28 октября 2011

Предполагая, что у вас есть небольшое конечное число объектов, как в вашем примере, попробуйте это:

  1. На чистом листе поместите таблицу примеров в верхнем левом углу.Таким образом, ячейка A2 = 3, B2 = «A», A3 = 2 и т. Д.
  2. В D2 введите «A» (это только начало формулы)
  3. В D3 введите следующую формулу:

    IF(COUNTIF($D$2:D6,$B$2)<$A$2,$B$2,  
    IF(COUNTIF($D$2:D6,$B$3)<$A$3,$B$3,  
    IF(COUNTIF($D$2:D6,$B$4)<$A$4,$B$4)))  
    
  4. Заполните эту формулу (т.е. скопируйте и вставьте) примерно на 10 строк, и вы увидите, что все заполняется соответственно.1016 *

    Что это делает, спросите вы?Во-первых, он подсчитывает количество вхождений «А» в предыдущих ячейках столбца D и сравнивает его с частотой.Если меньше, он входит в другой A. Затем этот процесс повторяется для B и C.

...