我正在寻找一种方法,在移动到下一组单元格之前,水平重复一组单元格一定次数。例如:
如果我在3列中有这个:
5 4 3
0 1 2
我有3列指示我希望迭代值的次数:
4 2 3
这个函数应该在拖动范围时给我这个:
5 5 5 5 4 4 3 3 3
0 0 0 0 1 1 2 2 2
有谁知道这样做的最佳方式?
我一直在使用一些错综复杂的推理来通过数组公式来解决这个问题(在它周围有" {}"括号,你必须使用Shift + Enter)。我使用SUMIF和COUNTIF函数来做一些事情,但它从来没有真正解决过。
答案 0 :(得分:0)
这是一个hacky VBA解决方案。这假定"重复计数"在第一行(4,2,3)和"值重复"在第二行(5,4,3,0,1,2)。
Sub outputRepeatedValues()
Dim xStart As Integer, yStart As Integer
Dim i As Integer, j As Integer
Dim valueToRepeat As Integer, numTimesRepeat As Integer
Dim xOffset As Integer, yOffset As Integer
xStart = ActiveCell.Column
yStart = ActiveCell.Row
i = 1
j = 1
xOffset = 0
yOffset = 0
While Cells(2, j) <> ""
If Cells(1, i) = "" Then
i = 1
yOffset = yOffset + 1
xOffset = 0
End If
numTimesRepeat = Cells(1, i)
valueToRepeat = Cells(2, j)
For k = 1 To numTimesRepeat
Cells(yStart + yOffset, xStart + xOffset) = valueToRepeat
xOffset = xOffset + 1
Next k
j = j + 1
i = i + 1
Wend
End Sub
坚持使用新模块。要使用此代码,请选择表示输出区域左上角的单元格。然后按Alt + F8以显示“宏”框,然后您可以运行宏。