求VBA脚本:将表格数据写入同工作簿指定工作表的指定单元格
VBA脚本:批量将表格数据写入指定工作表单元格
这个脚本可以批量读取当前工作表的配置数据,将指定内容写入同一工作簿内的目标工作表对应单元格,完美适配你描述的表格结构(第1列序号、第2列待写数据、第3列目标工作表名、第4列目标单元格地址)。
完整代码
Sub WriteDataToTargetCells() Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim lastRow As Long Dim i As Long Dim targetSheetName As String Dim targetCellAddr As String Dim dataToWrite As Variant ' 指定数据源工作表(默认用当前活动表,可替换为具体表名,比如Sheets("数据清单")) Set wsSource = ActiveSheet ' 获取数据源的最后一行(避免遍历空行) lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row ' 遍历每一行数据(如果第1行是表头就从2开始,直接是数据就改成1) For i = 2 To lastRow ' 提取当前行的配置信息 targetSheetName = wsSource.Cells(i, 3).Value targetCellAddr = wsSource.Cells(i, 4).Value dataToWrite = wsSource.Cells(i, 2).Value ' 检查目标工作表是否存在 On Error Resume Next Set wsTarget = ThisWorkbook.Sheets(targetSheetName) On Error GoTo 0 If Not wsTarget Is Nothing Then ' 写入数据到目标单元格 wsTarget.Range(targetCellAddr).Value = dataToWrite Set wsTarget = Nothing ' 释放对象引用 Else ' 工作表不存在时弹出提示(不需要的话可以删掉这行) MsgBox "工作表 '" & targetSheetName & "' 不存在,跳过第" & i & "行", vbExclamation End If Next i MsgBox "数据写入完成!", vbInformation End Sub
使用步骤
- 打开Excel工作簿,按下
Alt + F11打开VBA编辑器 - 右键点击项目窗口里的工作簿名称 → 插入 → 模块
- 把上面的代码粘贴到模块中
- 根据你的表格调整遍历起始行:如果第1行是表头,保持
For i = 2 To lastRow;如果第1行就是数据,改成For i = 1 To lastRow - 返回Excel界面,按
Alt + F8,选择WriteDataToTargetCells并点击执行
额外说明
- 脚本会自动跳过不存在的目标工作表,并给出提示;不需要提示的话,直接删除对应的
MsgBox行即可 - 支持写入各种类型的数据(文本、数字、日期等),会保留原数据格式
内容的提问来源于stack exchange,提问作者Nikita Agrawal
相关产品推荐
相关产品推荐

