蕭昶欣/Excel VBA/英文大數據
出自 青少年追求卓越
Option Explicit Sub Split() ' dim 是宣告變數 Dim sht1 As Worksheet '工作資料表 Dim sht2 As Worksheet '輸出資料表 Dim rng1 As Range '工作資料表的儲存格參考點 Dim rng2 As Range '輸出資料表的儲存格參考點 Dim i1 As Integer '工作資料表的指標 Dim i2 As Integer '輸出資料表的指標 Dim j As Integer '工作資料表儲存格的/位置 ' 以下是程式邏輯 Set sht1 = Worksheets("工作資料") 'set 是將變數連結一個物件 Set rng1 = sht1.Range("a1") Set sht2 = Sheets.Add sht2.Name = "輸出資料表" Set rng2 = sht2.Range("a1") i1 = 0 i2 = 0 Do Until rng1.Offset(i1, 0).Value = "" ' 每一列在此迴圈中處理 j = InStr(rng1.Offset(i1, 0).Value, "/") ' instr 功能為 search If j > 0 Then ' 處理有/的資料列 Do ' 將工作資料表目前儲存格/的左邊字串複製 ' 貼到輸出資料表的目前儲存格 ' 將工作資料表目前列的其它儲存格複製 ' 貼到輸出資料表的目前儲存格之右邊 i2 = i2 + 1 j = InStr(j + 1, rng1.Offset(i1, 0).Value, "/") Loop Until j = 0 Else ' 處理沒有/的資料列 Range(rng1.Offset(i1, 0), rng1.Offset(i1, 0).End(xlToRight)).Select Selection.Copy rng2.Offset(i2, 0).Select ActiveSheet.Paste i2 = i2 + 1 End If ' 指標+1 準備處理下一列 i1 = i1 + 1 Loop End Sub