亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

excel將一個工作表根據(jù)條件拆分成多個工作表圖文教程

  發(fā)布時間:2015-01-04 09:23:40   作者:佚名   我要評論
下面腳本之家的朋友介紹excel將一個工作表根據(jù)條件拆分成多個工作表的方法,對于經(jīng)常使用excel的朋友很有幫助,推薦到腳本之家,有需要的朋友可以過來參考一下,希望能對大家有所幫助

本例介紹在excel中如何將一個工作表根據(jù)條件拆分成多個工作表。

注意:很多朋友反映sheets(i).delete這句代碼出錯,要注意下面第一個步驟,要拆分的數(shù)據(jù)工作表名稱為“數(shù)據(jù)源”,而不是你新建工作簿時的sheet1這種。手動改成“數(shù)據(jù)源”即可。

操作步驟:

原始數(shù)據(jù)表如下(名稱為:數(shù)據(jù)源),需要根據(jù)B列人員姓名拆分成每個人一個工作表。

點擊【開發(fā)工具】-【Visual Basic】或者Alt+F11的快捷鍵進入VBE編輯界面。

如下圖所示插入一個新的模塊。

如下圖,粘貼下列代碼在模塊中:

復(fù)制內(nèi)容到剪貼板
  1. Sub CFGZB()   
  2.   
  3.     Dim myRange As Variant   
  4.   
  5.     Dim myArray   
  6.   
  7.     Dim titleRange As Range   
  8.   
  9.     Dim title As String   
  10.   
  11.     Dim columnNum As Integer   
  12.   
  13.     myRange = Application.InputBox(prompt:="請選擇標(biāo)題行:", Type:=8)   
  14.   
  15.     myArray = WorksheetFunction.Transpose(myRange)   
  16.   
  17.     Set titleRange = Application.InputBox(prompt:="請選擇拆分的表頭,必須是第一行,且為一個單元格,如:“姓名”", Type:=8)   
  18.   
  19.     title = titleRange.Value   
  20.   
  21.     columnNum = titleRange.Column   
  22.   
  23.     Application.ScreenUpdating = False   
  24.   
  25.     Application.DisplayAlerts = False   
  26.   
  27.     Dim i&, Myr&, Arr, num&   
  28.   
  29.     Dim d, k   
  30.   
  31.     For i = Sheets.Count To 1 Step -1   
  32.   
  33.         If Sheets(i).Name <> "數(shù)據(jù)源" Then   
  34.   
  35.             Sheets(i).Delete   
  36.   
  37.         End If   
  38.   
  39.     Next i   
  40.   
  41.     Set d = CreateObject("Scripting.Dictionary")   
  42.   
  43.     Myr = Worksheets("數(shù)據(jù)源").UsedRange.Rows.Count   
  44.   
  45.     Arr = Worksheets("數(shù)據(jù)源").Range(Cells(2, columnNum), Cells(Myr, columnNum))   
  46.   
  47.     For i = 1 To UBound(Arr)   
  48.   
  49.         d(Arr(i, 1)) = ""  
  50.   
  51.     Next   
  52.   
  53.     k = d.keys   
  54.   
  55.     For i = 0 To UBound(k)   
  56.   
  57.         Set conn = CreateObject("adodb.connection")   
  58.   
  59.         conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName   
  60.   
  61.         Sql = "select * from [數(shù)據(jù)源$] where " & title & " = '" & k(i) & "'"  
  62.   
  63.         Worksheets.Add after:=Sheets(Sheets.Count)   
  64.   
  65.         With ActiveSheet   
  66.   
  67.             .Name = k(i)   
  68.   
  69.             For num = 1 To UBound(myArray)   
  70.   
  71.                 .Cells(1, num) = myArray(num, 1)   
  72.   
  73.             Next num   
  74.   
  75.             .Range("A2").CopyFromRecordset conn.Execute(Sql)   
  76.   
  77.         End With   
  78.   
  79.         Sheets(1).Select   
  80.   
  81.         Sheets(1).Cells.Select   
  82.   
  83.         Selection.Copy   
  84.   
  85.         Worksheets(Sheets.Count).Activate   
  86.   
  87.         ActiveSheet.Cells.Select   
  88.   
  89.         Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _   
  90.   
  91.                                SkipBlanks:=False, Transpose:=False   
  92.   
  93.         Application.CutCopyMode = False   
  94.   
  95.     Next i   
  96.   
  97.     conn.Close   
  98.   
  99.     Set conn = Nothing   
  100.   
  101.     Application.DisplayAlerts = True   
  102.   
  103.     Application.ScreenUpdating = True   
  104.   
  105. End Sub   
  106.   

5、如下圖所示,插入一個控件按鈕,并指定宏到剛才插入的模塊代碼。

6、點擊插入的按鈕控件,根據(jù)提示選擇標(biāo)題行和要拆分的列字段,本例選擇“姓名”字段拆分,當(dāng)然也可以選擇C列的“名稱”進行拆分,看實際需求。

7、代碼運行完畢后在工作簿后面會出現(xiàn)很多工作表,每個工作表都是單獨一個人的數(shù)據(jù)。具體如下圖所示:

8、注意:

1)原始數(shù)據(jù)表要從第一行開始有數(shù)據(jù),并且不能有合并單元格;

2)打開工作簿時需要開啟宏,否則將無法運行代碼。

以上就是excel將一個工作表根據(jù)條件拆分成多個工作表圖文教程,希望能對大家有所幫助!

相關(guān)文章

最新評論