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

发布于 2024-12-12 07:28:39 字数 390 浏览 2 评论 0原文

我在 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)

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

I've read elsewhere on Stack Overflow that Excel questions are acceptable here, so please don't get annoyed :) If they should be elsewhere, just let me know...

I'm frustrated, because I'm pretty sure I used to know how to do this.

Imagine the following table:

Frequency       Object
3               A
2               B
4               C

In a third column, I want Excel to write:

A
A  
A
B
B
C
C
C
C

(3 A's because frequency of A = 3)

I'm pretty sure that this can be done by a single formula copied down the third column, but I can't remember how. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梅窗月明清似水 2024-12-19 07:28:40

我喜欢(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"))))

Ctrl在P3中+Shift+Enter并复制

CR

I liked the elegance of (1) formula, but it will only work if you dont have repeated objects (data).

This will always work, as long you dont have a numeric, diferent from zero, value in E2
Freq values in E3:E6 and Obj in D3:D6, formula starting in P3

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

or (and, in this case, you can have anything in 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 in P3 and copy down

CR

无风消散 2024-12-19 07:28:40

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

并根据需要填写。

In the first cell of your desired output column (E1 in this example), enter

=B1

Where B1 is the address of the first object. In the cell below (E2, here), enter

=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)

And fill down as far as you require.

最单纯的乌龟 2024-12-19 07:28:40

假设您的对象数量有限,如示例所示,请尝试以下操作:

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

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

Assuming you have a small finite number of objects like in your example, try this:

  1. In a blank sheet, put your example table in the top left. So Cell A2=3, B2="A", A3=2, etc.
  2. In D2, enter "A" (this is just to get the formula started)
  3. In D3, enter this formula:

    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. Fill this formula down (i.e. copy&paste) about 10 rows and you'll see everything fill in accordingly.

What does it do, you ask? First, it counts the number of occurrences of "A" in the previous cells of column D and compares it to the frequency. If less, it enters another A. Then that process is repeated for B and C.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文