VBA遍历所有sheet,找到前6位名称为“Daily&”的sheet,然后获取符合条件的sheet中AD列所有数据,分别写入名为“月”的sheet中,写入顺序从C列开始依次往后,当执行完一次程序后再次执行程序时还是要从C列开始依次往后写入
时间: 2023-07-15 14:12:36 浏览: 86
以下是实现你所需功能的VBA代码:
```
Sub GetDataFromSheets()
' 定义变量
Dim ws As Worksheet, wsNew As Worksheet
Dim lRow As Long, lCol As Long, i As Long, j As Long
Dim strName As String, strMonth As String
Dim arrData() As Variant
' 设置月份
strMonth = Format(Date, "yyyy年mm月")
' 创建新工作表
Set wsNew = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
wsNew.Name = strMonth
' 遍历所有工作表
For Each ws In ThisWorkbook.Worksheets
' 判断工作表名称是否符合要求
If Left(ws.Name, 6) = "Daily&" Then
' 获取数据范围
lRow = ws.Cells(Rows.Count, "AD").End(xlUp).Row
lCol = ws.Range("AD1").CurrentRegion.Columns.Count
' 读取数据
arrData = ws.Range("AD1", ws.Cells(lRow, lCol)).Value
' 写入新工作表
j = wsNew.Cells(1, Columns.Count).End(xlToLeft).Column + 1
For i = 1 To UBound(arrData, 2)
wsNew.Cells(1, j).Value = arrData(1, i)
j = j + 1
Next i
End If
Next ws
End Sub
```
代码说明:
1. 首先定义变量,包括工作表、行列数、名称等。
2. 然后设置月份,用于创建新工作表。
3. 创建新工作表,并将其命名为所需月份。
4. 遍历所有工作表,判断名称是否符合要求。
5. 如果符合要求,获取数据范围并读取数据。
6. 将读取的数据写入新工作表中,从C列开始依次往后写入。
注意事项:
1. 代码中假设数据是从AD列开始往右依次排列,如果实际情况不是这样,需要根据实际情况进行调整。
2. 如果已经存在名为“月”的工作表,程序会抛出错误,需要先将其删除或修改新工作表的名称。
阅读全文