将Excel中的频率表扩展到单个列中

我已经在Stack Overflow的其他地方看到Excel的问题在这里可以接受,所以请不要恼火:)如果他们应该在其他地方,让我知道…

我很沮丧,因为我很确定我曾经知道如何做到这一点。

想象一下下面的表格:

Frequency Object 3 A 2 B 4 C 

在第三列中,我想让Excel写:

 A AA B B C C C C 

(3 A的因为A = 3的频率)

我敢肯定,这可以通过一个单一的公式复制下来的第三列,但我不记得如何。 有什么build议么?

在所需输出列的第一个单元格(本例中为E1)中,input

 =B1 

其中B1是第一个对象的地址。 在下面的单元格(E2,在这里),input

 =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)公式的优雅,但只有在没有重复的对象(数据)的情况下才有效。

这将一直工作,只要你没有一个数字,不同于零, E3:E6中的E2频率值E3:E6D3:D6对象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 +在P3中input并复制下来

CR

假设你的例子中有一小部分对象,试试这个:

  1. 在一张白纸中,将您的示例表放在左上angular。 所以单元格A2 = 3,B2 =“A”,A3 = 2等
  2. 在D2中,input“A”(这只是为了让公式开始)
  3. 在D3中input这个公式:

     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行,你会看到一切相应的填写。

它是做什么的,你问? 首先,计算D列先前单元格中“A”的出现次数,并将其与频率进行比较。 如果更less,则进入另一个A.然后对B和C重复该过程。