5

我在 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 的频率)

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

4

3 回答 3

2

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

这将始终有效,只要您没有数字,不同于零,E2 Freq 中的值E3:E6和 Obj in 中的值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 中并向下复制

于 2013-12-01T14:34:31.660 回答
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 行,您会看到所有内容都相应填写。

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

于 2011-10-28T16:19:10.400 回答
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)

并根据需要填写。

于 2011-10-30T21:04:01.947 回答