Public Sub qq()
Dim rgn As Range
Dim name1 As String
Dim m As String
Dim n As Long
Dim wb As Workbook
Dim snamefile As String
Dim i As Long
n = 1
Application.ScreenUpdating = False
For Each rgn In ThisWorkbook.Sheets("1").UsedRange
If rgn.Value = "户主" Then
name1 = rgn.Offset(0, -2)
End If
If rgn.Value Like "*调查记事:填写:1)承包方代表变更情况;*" Then
If n = 1 Then
n = rgn.Row
m = "1" & ":" & n
Else
m = n + 1 & ":" & rgn.Row
n = rgn.Row
End If
snamefile = ThisWorkbook.Path & "\" & name1 & ".xlsx"
Set wb = Workbooks.Add
ThisWorkbook.Sheets("1").Rows(m).Copy Sheets("sheet1").Range("a1")
If nameexists(snamefile) Then
i = 0
Do
i = i + 1
snamefile = ThisWorkbook.Path & "\" & name1 & i & ".xlsx"
Loop While nameexists(snamefile)
End If
wb.SaveAs Filename:=snamefile
wb.Close
End If
Next
Application.ScreenUpdating = True
End Sub
Public Function nameexists(sname As String) As Boolean
If Dir(sname) <> "" Then
nameexists = True
End If
Public Sub qq()
Dim rgn As Range
Dim name1 As String
Dim m As String
Dim n As Long
Dim wb As Workbook
n = 1
Application.ScreenUpdating = False
For Each rgn In ThisWorkbook.Sheets("1").UsedRange
If rgn.Value = "户主" Then
name1 = rgn.Offset(0, -2)
End If
If rgn.Value Like "*调查记事:填写:1)承包方代表变更情况;*" Then
If n = 1 Then
n = rgn.Row
m = "1" & ":" & n
Else
m = n + 1 & ":" & rgn.Row
n = rgn.Row
End If
Set wb = Workbooks.Add
ThisWorkbook.Sheets("1").Rows(m).Copy Sheets("sheet1").Range("a1")
wb.SaveAs ThisWorkbook.Path & "\" & name1 & ".xlsx"
wb.Close
End If
Next
Application.ScreenUpdating = True
End Sub
文件增加到代码所在工作簿目录。
源文件格式有变化,不是固定行数,所以以表格最后一行作为结束判断。如确保每个表的最后一行一致,可以正确拆分。
没有考虑户主重名情况
Public Sub qq()
Dim rgn As Range
Dim name1 As String
Dim m As String
Dim n As Long
Dim wb As Workbook
Dim snamefile As String
Dim i As Long
n = 1
Application.ScreenUpdating = False
For Each rgn In ThisWorkbook.Sheets("1").UsedRange
If rgn.Value = "户主" Then
name1 = rgn.Offset(0, -2)
End If
If rgn.Value Like "*调查记事:填写:1)承包方代表变更情况;*" Then
If n = 1 Then
n = rgn.Row
m = "1" & ":" & n
Else
m = n + 1 & ":" & rgn.Row
n = rgn.Row
End If
snamefile = ThisWorkbook.Path & "\" & name1 & ".xlsx"
Set wb = Workbooks.Add
ThisWorkbook.Sheets("1").Rows(m).Copy Sheets("sheet1").Range("a1")
If nameexists(snamefile) Then
i = 0
Do
i = i + 1
snamefile = ThisWorkbook.Path & "\" & name1 & i & ".xlsx"
Loop While nameexists(snamefile)
End If
wb.SaveAs Filename:=snamefile
wb.Close
End If
Next
Application.ScreenUpdating = True
End Sub
Public Function nameexists(sname As String) As Boolean
If Dir(sname) <> "" Then
nameexists = True
End If