VBA早間檔
VBA早間檔,利用簡單的幾分鐘,學習一些簡單的VBA知識,提升工作效率
今日主題
今天我們繼續昨天的話題,VBA中split方法能夠實現Excel自帶的分列功能效果,不過有很多小夥伴也不是很滿足,既然能夠用Excel自帶的分列功能來實現我的需求,我為什麼還需要學習VBA,代碼那麼多!那麼VBA僅僅是能夠複製Excel的分列功能嘛?VBA表示不服氣了,並且表示他們做的更多,那麼來看看他還能實現哪些分列功能不能實現的效果呢?
案例展示和解析
這是我們昨天的案例,昨天我們成功的複製了Excel自帶的分列功能,實現了對單列數據按照指定分隔符的拆分,既然VBA表示自己更加強大,那麼我們來實現一些分列功能不能實現的效果,我們今天來針對多列數據進行拆分
這裡我們準備了兩列數據,我們來實現利用VBA一次性將這兩節數據進行拆分的效果,如果用Excel的分類功能,可能需要至少兩次才能夠實現,VBA只需要一次就可以了
代碼區
Sub sss()
Dim rng As Range, rngt As Range, a As Range, arr
Set rng = Application.InputBox("請選擇拆分單元格", , , , , , , 8)
Set trng = Application.InputBox("請選擇結果填充位置首單元格", , , , , , , 8)
k = 0
For Each a In rng
If a <> "" Then
arr = Split(a, "-")
If k <> 0 Then
trng.Offset(k, 0).Resize(1, UBound(arr) + 1) = arr
Else
trng.Resize(1, UBound(arr) + 1) = arr
End If
k = k + 1
End If
Next a
End Sub
依然是非常的簡單,來看下最終的效果。
成功的將這兩列數據,一次性的全部拆分出來了。
代碼解析
這裡我們只需要遍歷我們所選擇的多列的數據區域,然後循環進行拆分就可以了。
其實今天的方法也是非常的簡單,我們知道利用split方法得到的是一個數組
arr = Split(a, "-")
現在我們只需要找到一個位置將這個結果放置就可以了,那麼如何找到位置呢?
inputbox窗體直接選擇首單元格,然後就可以不斷的向下循環填充數據,最終得到我們想要的結果。
有小夥伴們說講的東西有點簡單,早間檔主要是分享一些簡單的基礎知識的,畢竟這個時候大家都還在犯困或者擠車的過程中,學習點輕鬆的基礎知識比較合適,不管是多麼強大的代碼都離是這些小小的基礎知識一點點的累計起來的,如果你都會了,那麼恭喜你,可以直接跳到更加有難度的實例部分了,晚間19點擋,我已經分享了很多工作中的實例代碼,如果你有更好的代碼歡迎一起交流,一起學習~~