求助:编写VBA实现Excel跨表提取账户净销售额并填充指定单元格
VBA代码提取SRSS报告中的账户净销售额
前提说明
- 假设存放SRSS报告数据的工作表名为
Sheet2(可根据实际文件名修改) - 需确保SRSS报告数据里,
account1/account2/account3的名称与对应净销售额存在明确行对应关系(以下代码默认账户名在A列,净销售额在同行情的B列,可按需调整)
VBA代码实现
Sub ExtractNetSales() Dim srcSheet As Worksheet Dim targetSheet As Worksheet Dim lastRow As Long Dim i As Long ' 指定源数据工作表和目标输出工作表 Set srcSheet = ThisWorkbook.Worksheets("Sheet2") Set targetSheet = ThisWorkbook.Worksheets("Sheet1") ' 获取源表最后一行数据行号 lastRow = srcSheet.Cells(srcSheet.Rows.Count, "A").End(xlUp).Row ' 遍历源表数据,匹配账户并提取净销售额 For i = 1 To lastRow Select Case Trim(srcSheet.Cells(i, "A").Value) Case "account1" targetSheet.Range("A1").Value = srcSheet.Cells(i, "B").Value Case "account2" targetSheet.Range("B1").Value = srcSheet.Cells(i, "B").Value Case "account3" targetSheet.Range("C1").Value = srcSheet.Cells(i, "B").Value End Select Next i MsgBox "净销售额提取完成", vbInformation End Sub
代码调整指南
- 若账户名称不在A列:修改
srcSheet.Cells(i, "A")中的列标识(例如用"C"代表第3列) - 若净销售额不在账户名右侧相邻列:修改
srcSheet.Cells(i, "B")中的列标识 - 若源工作表名不是
Sheet2:替换ThisWorkbook.Worksheets("Sheet2")中的工作表名称
使用步骤
- 打开目标Excel文件,确保Sheet1和SRSS数据工作表已存在
- 按下
Alt + F11打开VBA编辑器 - 右键点击项目窗口中的工作簿名称 → 插入 → 模块
- 将上述代码粘贴到新建模块中
- 根据实际数据结构调整代码参数
- 点击编辑器运行按钮,或回到Excel按
Alt + F8选择ExtractNetSales执行
内容的提问来源于stack exchange,提问作者Scott Bellefeuille
相关产品推荐
相关产品推荐

