|
楼主 |
发表于 2024-10-29 19:59
|
显示全部楼层
用了以下代码有错误,只能分出来第一个空行前的,后面的空行没分出来。
Sub 按单元格区域拆分工作表()
Dim wsSource As Worksheet,wsNew As Worksheet
Dim rng As Range, cell As Range, isFirstCell As Boolean
Set wsSource = ThisWorkbook.Sheets("Sheet1") '设置待拆分的工作表
isFirstCell = True ' 初始化为第一个单元格
' 遍历工作表的每一行
For Each cell In wsSource.UsedRange.Rows
' 如果单元格不为空
If Application.WorksheetFunction.CountA(cell) > 0 Then
' 如果是连续区域的第一个单元格
If isFirstCell Then
isFirstCell = False
Set rng = cell ' 记录连续区域的起始单元格
Else
Set rng = Union(rng, cell) ' 将连续区域扩展
End If
ElseIf Not isFirstCell Then ' 如果遇到空行
' 复制连续区域到新工作表
Set wsNew = Sheets.Add(After:=Sheets(Sheets.Count))
rng.Copy wsNew.Range("A1")
' 以连续区域的第一个单元格的值命名新工作表
wsNew.Name = rng.Cells(1, 1).Value
Set rng = Nothing ' 重置区域变量
isFirstCell = True ' 重置为第一个单元格
End If
Next cell
' 处理最后一个连续区域
If Not rng Is Nothing Then
Set wsNew = Sheets.Add(After:=Sheets(Sheets.Count))
rng.Copy wsNew.Range("A1")
wsNew.Name = rng.Cells(1, 1).Value
End If
End Sub |
|