我有一个与那里类似的任务:
Copy value N times in Excel
但我的有点复杂。
所以,我有这种表:
A B
dog-1.txt 3
cat-1.txt 2
rat-1.txt 4
cow-1.txt 1
最终结果需要如下:
A
dog-1.txt
dog-2.txt
dog-3.txt
cat-1.txt
cat-2.txt
rat-1.txt
rat-2.txt
rat-3.txt
rat-4.txt
cow-1.txt
如您所见,它不仅将单元格内容乘以从 B 列获取的 X 倍,而且还会将文件名中的数字增加 1 步增加相同的次数。
我怎么能做到这一点?
最佳答案
尝试以下方法( 久经考验的 ):
Sub Extend()
Dim Rng As Range, Cell As Range
Dim WS As Worksheet, NewCell As Range
Dim Dict As Object, NewStr As String
Set WS = ThisWorkbook.Sheets("Sheet1") 'Modify as necessary.
Set Rng = WS.Range("A1:A5") 'Modify as necessary.
Set Dict = CreateObject("Scripting.Dictionary")
For Each Cell In Rng
If Not Dict.Exists(Cell.Value) Then
Dict.Add Cell.Value, Cell.Offset(0, 1).Value
End If
Next Cell
Set NewCell = WS.Range("C1") 'Modify as necessary.
For Each Key In Dict
For Iter = 1 To CLng(Dict(Key))
NewStr = "-" & Iter & ".txt"
NewStr = Mid(Key, 1, InStrRev(Key, "-") - 1) & NewStr
NewCell.Value = NewStr
Set NewCell = NewCell.Offset(1, 0)
Next Iter
Next Key
End Sub
截图(运行后):
这里的逻辑是从第一列获取每个名称,将其存储为字典键,然后获取它旁边的值并将其存储为键值。然后我们在字典的每个键中进行迭代,我们使用键值作为迭代的上限。在每次迭代期间,我们修改字符串以将其数字更改为迭代的“当前数字”。
我们选择
C1
作为初始目标细胞。每次迭代,我们将其偏移一 (1) 行以适应新的/下一次迭代。让我们知道这是否有帮助。
关于Excel复制单元格值X次,最后数字增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21981480/