|
10学分
在“问题”表中,请各位大侠帮忙编写一段代码,把“展开层”这一列里面每一段以“....4”这一行开头的区域单独提取出来,分别以“....4”行里面E列的单元格内容命名,保存ABC文件夹中,万分感谢!!
试试看!一共生成了66个子文档。 - Sub xq()
- Application.ScreenUpdating = False
- Dim arr, brr, crr, i%, j%, k%, x%, fn$
- Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = 4
- arr = [A1].CurrentRegion
- brr = [A1].Resize(2, UBound(arr, 2))
- ReDim crr(1 To UBound(arr), 1 To UBound(arr, 2))
- For i = 3 To UBound(arr)
- If arr(i, 1) Like "*4" Then
- k = k + 1
- If k = 1 Then
- x = x + 1
- For j = 1 To UBound(arr, 2)
- crr(x, j) = arr(i, j)
- Next
- fn = arr(i, 5)
- End If
- If k = 2 Then
- Worksheets.Add(, Sheets(Sheets.Count)).Name = fn
- With ActiveSheet
- .[A1].Resize(2, UBound(arr, 2)).Value = brr
- .[A3].Resize(x, UBound(arr, 2)).Value = crr
- .[A1].Select
- .Move
- End With
- ActiveWorkbook.SaveAs ThisWorkbook.Path & "" & fn & ".xlsx", FileFormat:=51
- ActiveWorkbook.Close False
- ReDim crr(1 To UBound(arr), 1 To UBound(arr, 2))
- For j = 1 To UBound(arr, 2)
- crr(1, j) = arr(i, j)
- Next
- fn = arr(i, 5)
- k = 1
- x = 1
- End If
- Else
- If k = 1 Then
- x = x + 1
- For j = 1 To UBound(arr, 2)
- crr(x, j) = arr(i, j)
- Next
- End If
- End If
- Next
- Cells(Rows.Count, 1).End(xlUp).ClearContents
- Application.ScreenUpdating = True
- End Sub
复制代码附件:
问题xq.rar
(363.77 KB, 下载次数: 10)
|
|