国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > Excel > 正文

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

2019-12-13 13:59:14
字體:
來源:轉載
供稿:網友

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

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

軟件名稱:
Excel2003綠色版 EXCEL2003精簡綠色版 (附excel2003綠色工具)
軟件大小:
13.3MB
更新時間:
2012-06-19

操作步驟:

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

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

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

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

復制內容到剪貼板
  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:="請選擇標題行:", 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 <> "數據源" 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("數據源").UsedRange.Rows.Count   
  44.   
  45.     Arr = Worksheets("數據源").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 [數據源$] 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、點擊插入的按鈕控件,根據提示選擇標題行和要拆分的列字段,本例選擇“姓名”字段拆分,當然也可以選擇C列的“名稱”進行拆分,看實際需求。

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

8、注意:

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海宁市| 封丘县| 九龙县| 年辖:市辖区| 东海县| 仪陇县| 盐津县| 中超| 通河县| 唐海县| 方正县| 蒙阴县| 祁阳县| 巧家县| 庆云县| 南城县| 穆棱市| 柏乡县| 抚宁县| 长垣县| 舟曲县| 肥城市| 贡嘎县| 建阳市| 广元市| 东山县| 绵阳市| 西青区| 娄底市| 庆云县| 凭祥市| 华坪县| 清丰县| 福建省| 泊头市| 太和县| 巴中市| 哈巴河县| 潢川县| 英德市| 若羌县|