我已经在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的频率)
我很确定这可以通过在第三列中复制的单个公式来完成,但我不记得如何。有什么建议吗?
答案 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)
假设您的示例中有一些有限数量的对象,请尝试以下方法:
在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)))
将此公式填写(即复制和粘贴)大约10行,您会看到所有内容都相应填写。
你问,它做了什么?首先,它计算列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)
根据需要填写。