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

时间:2011-10-28 14:49:33

标签: excel excel-2007 worksheet-function openoffice-calc

我已经在Stack Overflow的其他地方读过Excel问题在这里可以接受了,所以请不要生气:)如果他们应该在其他地方,请告诉我......

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

想象一下下表:

Frequency       Object
3               A
2               B
4               C

在第三栏中,我希望Excel写一下:

A
A  
A
B
B
C
C
C
C

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

我很确定这可以通过在第三列中复制的单个公式来完成,但我不记得如何。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

我喜欢(1)公式的优雅,但只有在你没有重复的对象(数据)时它才会起作用。

这将始终有效,只要您在E2中没有数字,与零不同的值 E3:E6中的频率值和D3:D6中的Obj值,公式从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"))))
P3中的

Ctrl + Shift + Enter 输入并复制

CR

答案 1 :(得分:1)

假设您的示例中有一些有限数量的对象,请尝试以下方法:

  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行,您会看到所有内容都相应填写。

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

答案 2 :(得分:1)

在所需输出列的第一个单元格中(本例中为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)

根据需要填写。