è¿ä¸åæç½äºï¼é¨é¨é½å¨Aåï¼è¡¨å¤´åªæä¸è¡ï¼ä»£ç å¦ä¸å¾ï¼
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/d50735fae6cd7b89a3d59a111d2442a7d8330ee2?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
ä¸é¢çæåä»
ä¾åèï¼æµè§å¨å¯è½ä¼å·åå符ï¼
Option Explicit
Sub æå()
Dim depts, dept, arr, i, j, st, wb, st2
Set depts = CreateObject("scripting.dictionary")
'第ä¸æ¬¡æ«æï¼è·å¾ææé¨é¨æ¸
å
For Each st In Sheets
arr = st.UsedRange
For i = 2 To UBound(arr)
dept = Trim(arr(i, 1))
If dept <> "" Then depts(dept) = True
Next i
Next st
'第äºæ¬¡æ«æï¼ç产åé¨é¨æ件
Set wb = ThisWorkbook
For Each dept In depts.keys
With Workbooks.Add
For Each st In wb.Sheets
arr = st.UsedRange
Set st2 = .Sheets.Add(after:=.Sheets(.Sheets.Count))
st2.Name = st.Name
j = 0
For i = 1 To UBound(arr)
If i = 1 Or Trim(arr(i, 1)) = dept Then
j = j + 1
st.Rows(i).Copy st2.Rows(j)
End If
Next i
Next st
.SaveAs wb.FullName & "." & dept & ".xlsx"
.Close
End With
Next dept
End Sub
追é®For i = 2 To UBound(arr) è¿è¡å°±å¼å§æ¥éäºï¼è½å¸®å¿è¯ä¸å
追çè¿æ¯å ä¸ºä½ çå·¥ä½ç°¿éé¢æ空表