Excel 自動分列實現一則


當一列中存放 1:n 數據,並使用特定符號分隔時,可使用“數據”-“分列”工具,將一個單元格內容依次分列。

 

例如:學生信息列表中,每個學生占據一行;學生的所選課程為表中一列,對於某學生選擇的多個課程,各課程名使用特定符號分隔。

要簡化分列操作,可采用VBA編寫指令宏實現。

如下圖所示,A列保存由分隔符分隔的數據,C1處指定分隔符,設置按鈕,D列保存分列之后的數據:

按鈕宏代碼如下:

 1 Sub 弄()
 2     Dim SrcRi As Integer '定義用於遍歷源數據的行索引
 3     Dim TarRi As Integer '定義用於遞增目標數據行的索引
 4     SrcRi = 1 '初始化從1開始索引
 5     TarRi = 1 '初始化從1開始索引
 6     Dim MarkEnd As Boolean '定義用於外層循環結束的標記
 7     MarkEnd = False '初始化標記為false
 8     Dim Splitor As Variant '定義分隔符
 9     Splitor = Cells(1, 3).Value '從單元格獲取分隔符
10     While Not MarkEnd '進入外層循環,遍歷源數據列
11         If IsEmpty(Cells(SrcRi, 1)) Then '判斷當前遍歷的源單元格是否為空
12             MarkEnd = True '為空則標記結束
13         Else
14             Dim Arr As Variant '定義保存分隔后字符串的數組
15             Arr = Split(Cells(SrcRi, 1), Splitor) '從當前遍歷的源單元格分隔出字符串
16             For i = LBound(Arr) To UBound(Arr) Step 1 '進入內層循環,向目標列寫入
17                 Cells(TarRi, 4).Value = Arr(i) '向目標單元格寫入一個分隔后的字符串
18                 TarRi = TarRi + 1 '目標行索引加1
19             Next
20         End If
21         SrcRi = SrcRi + 1 '源行索引加1
22         'MsgBox SrcRi '調試用
23     Wend
24 End Sub

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM