国产探花免费观看_亚洲丰满少妇自慰呻吟_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將一個工作表根據條件拆分成多個工作表圖文教程,希望能對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗平县| 新泰市| 江门市| 临武县| 霸州市| 双桥区| 山西省| 定边县| 冷水江市| 江口县| 临邑县| 离岛区| 临桂县| 马公市| 永和县| 吉水县| 天门市| 辰溪县| 成都市| 湘潭市| 灌南县| 苏州市| 扎兰屯市| 平顺县| 柘城县| 台州市| 房山区| 鄄城县| 冷水江市| 泽普县| 陈巴尔虎旗| 繁峙县| 汉寿县| 铅山县| 肇庆市| 庆元县| 萨迦县| 云安县| 东乡| 西峡县| 江安县|