离开当前屏幕的判断方法_EXCEL 一个工作表如何快速拆分多个工作表的方法
下面說下在一個(gè)工作簿里把里面的一個(gè)工作表依據(jù)實(shí)際需求的條件內(nèi)容,快速拆分成多個(gè)工作表方法。
1.打開excel文件,現(xiàn)在需要依據(jù)地區(qū)和國家這個(gè)條件,分別單獨(dú)生成不同的工作表出來,最原始的方法是手動(dòng)新建工作表一個(gè)一個(gè)的內(nèi)容復(fù)制粘貼,這方法內(nèi)容比較少是可行的,當(dāng)倘若一個(gè)工作表里有幾百個(gè)內(nèi)容依據(jù)條件分別生成n個(gè)獨(dú)立的工作表,工作效率低,不建議使用手動(dòng)新建工作表復(fù)制粘貼內(nèi)容;
2.右鍵工作表,選擇查看代碼打開VBA窗口,復(fù)制輸入以下代碼帶窗口中;
Sub 工作表拆分2() '通過篩選方法完成需求,速度快,但當(dāng)有合并單元格時(shí)就不能用。讀者可以根據(jù)實(shí)際情況選用
Dim SplitCol As String, ColNum As Integer, HeadRows As Byte, arr, lastrow, i, ShtIndex, only As New Collection, Rng As Range
SplitCol = "D" '指定拆分條件所在列
HeadRows = 1 '指定標(biāo)題行數(shù),該區(qū)域不參與拆分
If HeadRows >= ActiveSheet.UsedRange.Rows.Count Then Exit Sub '如果指定的標(biāo)題行大于已用區(qū)域行數(shù)則退出程序
ColNum = Cells(1, SplitCol).Column '將列標(biāo)轉(zhuǎn)換成數(shù)字
lastrow = ActiveSheet.UsedRange.Rows.Count '獲取當(dāng)前表已用區(qū)域的行數(shù)
arr = Range(Cells(HeadRows + 1, SplitCol), Cells(lastrow, SplitCol)).Value '將拆分列的數(shù)據(jù)賦與變量arr
On Error Resume Next
If ActiveSheet.FilterMode Then Cells.AutoFilter '如果處于篩選模式,那么去除篩選模式
For i = 1 To lastrow - HeadRows '遍歷arr所有數(shù)據(jù)
'提取其中的不重復(fù)值
If Len(arr(i, 1)) > 0 Then only.Add CStr(arr(i, 1)), CStr(arr(i, 1))
Next i
ShtIndex = ActiveSheet.Index '獲取當(dāng)前表位置
On Error Resume Next
For i = 1 To only.Count
Debug.Print Sheets(only(i)).Name '獲取與only對(duì)象中每個(gè)元素同名的工作表名(用意為判斷是否存在該工作表)
If Err = 0 Then MsgBox "當(dāng)前工作簿已存在與待拆分項(xiàng)目同名的工作表“" & only(i) & "”,暫無法拆分", 64, "友情提示": Exit Sub
Err.Clear
Next i
Application.ScreenUpdating = False '關(guān)閉屏幕更新,加快執(zhí)行速度
Application.Calculation = xlCalculationManual '調(diào)為手動(dòng)計(jì)算,加快執(zhí)行速度
For i = 1 To only.Count '創(chuàng)建工作表,表的數(shù)量與表名由only對(duì)象中不重復(fù)值而定
Sheets.Add After:=Sheets(Sheets.Count) '創(chuàng)建
Sheets(Sheets.Count).Name = only(i) '命名
Sheets(ShtIndex).Rows("1:" & HeadRows).Copy Sheets(Sheets.Count).Cells(1, 1) '復(fù)制標(biāo)題
Next i
Sheets(ShtIndex).Select '返回待拆分工作表
For i = 1 To only.Count '遍歷Collection對(duì)象所有成員。Collection對(duì)象包括了所有拆分條件,即工作表名
'對(duì)拆分條件所在列進(jìn)行篩選,篩選條件是Collection對(duì)象中的成員,本例中是部門名稱
Range(Cells(HeadRows, SplitCol), Cells(lastrow, SplitCol)).AutoFilter Field:=1, Criteria1:=only(i)
Set Rng = Range(Cells(HeadRows + 1, SplitCol), Cells(Rows.Count, SplitCol).End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow '引用篩選后的數(shù)據(jù)(整行)
With Sheets(only(i)).UsedRange.Rows(Sheets(only(i)).UsedRange.Rows.Count + 1) '引用拆分后的工作表的已用區(qū)域下一行
Rng.Copy .Cells(1) '第一次復(fù)制,復(fù)制所有數(shù)據(jù),僅取其格式
.Cells = Rng.Value '第二次復(fù)制,僅復(fù)制數(shù)值
End With
Next
Cells.AutoFilter '去除篩選模式
Application.ScreenUpdating = True '恢復(fù)屏幕更新
Application.Calculation = xlCalculationAutomatic '恢復(fù)自動(dòng)計(jì)算
MsgBox "拆分完畢!", 64, "友情提示"
End Sub
3.修改好代碼之后,按下快捷鍵F5鍵運(yùn)行宏命令即可快速完成工作表的拆分;
4.宏命令說明,SplitCol = "a" '指定拆分條件所在列,這里以國家地區(qū)為拆分條件,它在D列,修改為SplitCol = "D" , 而HeadRows = 1 代表指定標(biāo)題行數(shù),該區(qū)域固定不進(jìn)行拆分,即拆分出來的每個(gè)工作表的首行都會(huì)有一個(gè)一樣的表頭,拆分之后,之后再對(duì)拆分出來的工作表進(jìn)行格式修飾下,按住shift鍵鼠標(biāo)點(diǎn)擊多選不要的工作表右鍵進(jìn)行刪除即可。
excel一個(gè)工作表拆分多個(gè)https://www.zhihu.com/video/1247151257426538496總結(jié)
以上是生活随笔為你收集整理的离开当前屏幕的判断方法_EXCEL 一个工作表如何快速拆分多个工作表的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python功能分享_Python中非常
- 下一篇: python read_csv chun