让我们考虑一个序列:1,2,3,4,5.... 这显然很容易在 Excel 中创建。但是,如何创建派生序列,其中原始序列的每个成员连续出现 N 次?
对于 N=3 1,1,1,2,2,2,3,3,3,4,4,4,... 等
我最终复制了 1 列,并用粘贴特殊的添加函数将其每轮向下滑动 N 行。然而,这远不是一个好的解决方案。
谢谢你的想法。
最简单的解决方案是使用常规 Excel 公式。
如果您从 A1 开始,请将此公式放入并复制下来:
=ROUNDUP(ROWS(A$1:A1)/3,0)
Run Code Online (Sandbox Code Playgroud)
ROUNDUP将数字四舍五入到小数点后n位。在本例中,n设置为 0,因此 Excel 将四舍五入到最接近的整数。
ROWS计算某个范围内的行数。根据您的起始位置调整范围参考。当您复制/粘贴时,Excel 将处理其他单元格的调整。
注意:这里的美元符号很重要。它锁定范围开始的引用,以便它始终位于范围的起始行(或者更准确地说,是您将公式放入的第一个单元格的行 - 因此从第一行开始无论您如何复制/粘贴公式。如果没有这个,当你复制它时你的公式就会被破坏。因此,根据第一个单元格的位置更改字母和数字,但将美元符号保留在那里。

/3用于将 ROWS 计数除以三。由于这是在 ROUNDUP 函数内部,并且设置为小数点后 0 位,因此所有结果都将四舍五入到最接近的整数。一旦公式填入该列的其余部分,这将导致每个数字重复 3 次。要获得不同的重复率,请将 3 更改为不同的数字。
如果您希望跨行执行此操作,而不是沿列执行此操作(例如:在 A1、B1、C1...而不是 A1、A2、A3...)中,则需要使用 COLUMNS函数而不是 ROWS,并调整范围引用,以便锁定起始列而不是起始行。
例子:
=ROUNDUP(COLUMNS($A1:A1)/3,0)
Run Code Online (Sandbox Code Playgroud)
对于适用于行或列布局的公式,您可以使用如下所示的公式,但最好根据您实际使用的布局选择上述公式之一。如果您的范围跨越多行和多列,这也可能会产生不需要的结果。
=ROUNDUP(COLUMNS($A1:A1)*ROWS(A$1:A1)/3,0)
Run Code Online (Sandbox Code Playgroud)
对于非顺序和/或非数字的内容,您需要留出一个范围作为源列表。假设您的源值列表位于 B 列中,从 B1 开始。为此,要在 A 列中每个值重复 3 次,您可以在 A1 中使用它并向下复制:
=INDIRECT(CONCATENATE("B",ROUNDUP(ROWS(A$1:A1)/3,0)))
Run Code Online (Sandbox Code Playgroud)
注意:这不会根据源列的移动进行调整。"B"如果源列被移动,您将必须手动修复公式,进行更改以匹配新位置。如果源数据从第 1 行以外的行开始,则需要稍微调整公式以添加偏移量。
如果您希望能够调整重复率,请使用除数的参考单元格。下面的示例从前面的公式开始,并假设除数位于 C1 中。
=INDIRECT(CONCATENATE("B",ROUNDUP(ROWS(A$1:A1)/C1,0)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9593 次 |
| 最近记录: |