VBA将指定多列多行数据按每一行填一个sheet分别填入已有多个非空sheet表格的指定位置,且待填数据仅选择已有非空sheet表格个数的前面行代码,不删除原有sheet内数据
时间: 2024-10-01 15:09:03 浏览: 31
在VBA宏中实现这样的功能,你需要遍历源数据、确定目标工作表以及插入位置。以下是一个基本的示例,假设你有一个名为`SourceData`的数据范围,它有多行多列,并且你想将其填充到已经有非空数据的工作表列表`SheetsToFill`中,每张工作表最多填充前`SheetsToFill.Count`行:
```vba
Sub FillDataToMultipleSheets()
Dim ws As Worksheet
Dim sourceRange As Range
Dim dataRow As Long
Dim destSheetIndex As Long
' 指定源数据范围
Set sourceRange = Sheets("Sheet1").Range("A1:B10") ' 请替换为你实际的数据范围
' 获取需要填写的工作表集合
Dim sheetsToFill() As String
sheetsToFill = Array("Sheet2", "Sheet3", "Sheet4") ' 替换为你需要填充的非空工作表名称
' 遍历每个工作表并填充数据
For Each ws In ThisWorkbook.Sheets(sheetsToFill)
If Not ws.Cells(1, 1).IsBlanks Then ' 检查工作表是否有数据
destSheetIndex = 1 ' 初始化目的地行
For Each cell In sourceRange.Rows(sourceRange.Rows.Count).Cells ' 只处理最后一行数据
ws.Cells(destSheetIndex, 1).Value = cell.Value ' 将数据复制到第一个单元格
' 如果达到最大限制,跳过剩余行
If destSheetIndex >= SheetsToFill.Count Then Exit For
destSheetIndex = destSheetIndex + 1
Next cell
End If
Next ws
End Sub
```
这个脚本会检查每个工作表的第一行是否为空,如果非空则开始填充数据。注意你需要根据实际情况调整源数据范围、目标工作表数组,以及填充的位置。
阅读全文