我每个月都会收到一份大型电子表格,需要手动输入最多 6 个相同客户 ID 的实例。我想设计一个宏或 VBA 代码,它将获取我的客户列表并在单独的行上创建一系列重复值。例如,A 列当前包含以下内容:
A
1 Cust1
2 Cust2
3 Cust3
我的 VBA/宏将生成以下输出:
A
1 Cust1
2 Cust1
3 Cust1
4 Cust1
5 Cust1
6 Cust1
7 Cust2
8 Cust2
9 Cust2
10 Cust2
11 Cust2
12 Cust2
谢谢!
答案1
使用 VBA 的宏:
Public Sub customCustomers()
Application.ScreenUpdating = False
sourceSheet = "Sheet1"
destSheet = "Sheet2"
initialSrcRow = 1
initialDstRow = 1
times = 6
Dim wkb As Workbook
Dim wks, wks1 As Worksheet
Set wkb = ThisWorkbook
Set wks = wkb.Sheets(sourceSheet)
Set wks1 = wkb.Sheets(destSheet)
wks1.Rows.Clear
seeking = True
While seeking
theCustomer = wks.Cells(initialSrcRow, 1)
If theCustomer <> "" Then
For i = 1 To times
wks1.Cells(initialDstRow, 1) = theCustomer
initialDstRow = initialDstRow + 1
Next i
initialSrcRow = initialSrcRow + 1
Else
seeking = False
End If
Wend
Application.ScreenUpdating = True
theMessage = MsgBox("Finished copying customers on Sheet: " & destSheet, vbOKOnly)
End Sub
打开 VBA/Macros,在本工作簿插入一个新模块并将此代码粘贴到右侧。
您可以调整以下变量以满足您的需要:
sourceSheet
:原始工作表的名称,在我的示例中是 工作表1。destSheet
:目标表的名称,在我的示例中是 工作表2。initialSrcRow
:源工作表的第一行。initialDstRow
:目标工作表的第一行。times
:客户必须在目标表上重复的次数。