蕭昶欣/Excel VBA/英文大數據

出自 青少年追求卓越
< 蕭昶欣‎ | Excel VBA
於 2018年3月21日 (三) 05:33 由 蕭昶欣 (對話 | 貢獻) 所做的修訂
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋

學習歷程

  • 開始日期:2018-03-21(三)

小筆記

程式碼

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