请求编写VBA代码将客户名与账单号批量填充至M、N列
Excel批量填充客户名称与账单编号至明细行的VBA解决方案
问题说明
- 输入数据示例:

- 期望输出效果:

现有Excel数据中,客户名称与账单编号位于明细行上方(如第3行客户名“5145”、账单号“Shrin”,下方两行是其账单明细),需将对应客户名和账单号批量填充至M列和N列,便于后续数据分析。
VBA代码实现
Sub FillCustomerInvoice() Dim targetSheet As Worksheet Dim lastDataRow As Long Dim custName As String Dim invoiceNo As String Dim rowIndex As Long ' 指定目标工作表,根据实际情况修改表名 Set targetSheet = ThisWorkbook.Worksheets("Sheet1") lastDataRow = targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row ' 遍历所有数据行 For rowIndex = 1 To lastDataRow ' 判断当前行是否为客户/账单号行(依据:当前行A列有值,下一行A列也有值) If targetSheet.Cells(rowIndex, "A").Value <> "" And targetSheet.Cells(rowIndex + 1, "A").Value <> "" Then ' 记录当前客户名和账单号 custName = targetSheet.Cells(rowIndex, "A").Value invoiceNo = targetSheet.Cells(rowIndex, "B").Value ' 明细行A列为空,填充对应信息 ElseIf targetSheet.Cells(rowIndex, "A").Value = "" Then targetSheet.Cells(rowIndex, "M").Value = custName targetSheet.Cells(rowIndex, "N").Value = invoiceNo End If Next rowIndex End Sub
使用步骤
- 打开目标Excel文件,按下
Alt + F11打开VBA编辑器 - 右键点击左侧工程窗口中的目标工作簿,选择「插入」→「模块」
- 将上述代码粘贴到新模块中,修改代码里的
Sheet1为你的实际工作表名称 - 按下
F5运行宏,或回到Excel界面通过「开发工具」→「宏」选择FillCustomerInvoice执行
注意事项
- 代码默认客户名在A列、账单号在B列,填充目标为M列(客户名)和N列(账单号),若你的列位置不同,可修改代码中的列标识(如"A"、"B"、"M"、"N")
- 若明细行数量不固定,只要客户/账单号行的下一行是明细行,代码即可自动识别并填充
内容的提问来源于stack exchange,提问作者Arvind
相关产品推荐
相关产品推荐

