以下是一个示例代码,可以拆分工作表并返回基础信息表:
Sub SplitAndReturnBaseInfo()
'设置要拆分的工作表和拆分列
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim splitColumn As String: splitColumn = "A"
'创建基础信息表
Dim baseWs As Worksheet: Set baseWs = ThisWorkbook.Worksheets.Add(After:=ws)
baseWs.Name = "Base Info"
baseWs.Range("A1").Value = "Sheet Name"
baseWs.Range("B1").Value = "Start Row"
baseWs.Range("C1").Value = "End Row"
'获取拆分列的最后一行
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, splitColumn).End(xlUp).Row
'循环拆分并记录基础信息
Dim i As Long
For i = 2 To lastRow '从第二行开始,因为第一行是标题
'获取当前行的拆分值和工作表名称
Dim cell As Range: Set cell = ws.Range(splitColumn & i)
Dim splitValue As String: splitValue = cell.Value
Dim sheetName As String: sheetName = "Sheet_" & splitValue
'记录基础信息
Dim startRow As Long: startRow = i
Dim endRow As Long: endRow = ws.Cells(i, ws.Columns.Count).End(xlToLeft).Column
ws.Range("A" & i & ":" & ws.Cells(i, endRow).Address).Copy Destination:=baseWs.Range("A" & i)
baseWs.Range("B" & i).Value = startRow
baseWs.Range("C" & i).Value = endRow
'创建新工作表并复制数据
Dim newWs As Worksheet: Set newWs = ThisWorkbook.Worksheets.Add(After:=ws)
newWs.Name = sheetName
ws.Range("A1:" & ws.Cells(1, endRow).Address).Copy Destination:=newWs.Range("A1")
ws.Range("A" & i & ":" & ws.Cells(i, endRow).Address