「あーあ、この1つのセルに詰まっている住所データ、全部別のセルに分けないとダメなの…?1000件もあるのに、これじゃ今日帰れないよ…」
そんな経験はありませんか?
実は私も新人時代、1,000件もの住所データ(都道府県,市区町村,番地…)を、気合と根性だけで何時間もかけて手作業で分割したことがあります。
しかし、終わった直後に上司から「ごめん、分けなくてよかった」と言われ、目の前が真っ暗になった苦い経験があります(笑)。
手作業は時間がかかる上に、ミスも起こりやすいですよね。
でも大丈夫です。VBAの「Split(スプリット)関数」を使えば、その気の遠くなるような作業を、たった1秒で終わらせることができます。
今回は、プログラミングに苦手意識がある方でもそのままコピペで使えるように、Split関数の基本から実務で超役立つ応用技まで、分かりやすく解説します!
Split関数は「魔法のハサミ」と「お薬カレンダー」
専門用語を使うと「Split関数は、指定した区切り文字で文字列を分割し、1次元配列を返す関数」となりますが、これだけではいまいちピンとこないですよね。
例え話をしてみましょう。
Split関数は「魔法のハサミ」です。
そして「配列(はいれつ)」は、曜日ごとのポケットがついた「お薬カレンダー」です。
- 「りんご,みかん,バナナ」という長いリボン(文字列)があります。
- Split関数(ハサミ)に「カンマ(,)の部分で切ってね」とお願いします。
- チョキチョキと切られた「りんご」「みかん」「バナナ」は、自動的にお薬カレンダー(配列)の「0番のポケット」「1番のポケット」「2番のポケット」に順番に入ります。
要するに、これだけのことです!
では、実際のコードを見てみましょう。
【基本】カンマで区切って取り出すコード
以下のコードはそのままコピペして使えます。
Sub SplitBasic()
Dim myText As String ' 切る前のリボン(文字列)を入れる箱
Dim myArray() As String ' 切った後に入れるお薬カレンダー(配列)
Dim i As Long
' 1. 分割したい文字列を用意
myText = "りんご,みかん,バナナ"
' 2. Split関数(ハサミ)で「,(カンマ)」を区切り文字として分割!
' 切ったものはmyArray(お薬カレンダー)に入れます
myArray = Split(myText, ",")
' 3. 分割したものを順番に取り出して確認(今回はイミディエイトウィンドウに表示)
' UBoundは「カレンダーの一番最後のポケットの番号」を教えてくれます
For i = 0 To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
【応用】実務で頻出!ファイルパスから「ファイル名」だけを取り出す作業を自動化
Split関数は、単に区切るだけでなく「一番後ろのデータだけが欲しい!」という時にも大活躍します。
例えば、「C:\Users\Desktop\Work\report.xlsx」という長い文字列から、ファイル名(report.xlsx)だけを取り出し、そのファイル名をセルに入力するような作業に使えます。
Sub GetFileName()
Dim filePath As String
Dim pathArray() As String
Dim fileName As String
' フルパスの文字列
filePath = "C:\Users\Desktop\Work\report.xlsx"
' 「\(円マーク)」を目印にして分割
pathArray = Split(filePath, "\")
' UBound関数を使って、配列の最後(一番右)の要素だけをピンポイントで取得!
fileName = pathArray(UBound(pathArray))
' 結果:report.xlsx が取得できます
Debug.Print "ファイル名は: " & fileName
End Sub
いかがでしたか?「配列」と聞くと難しく感じてしまいますが、要はただの「小分けポケット」だとお分かりいただけたでしょうか。
Split関数という魔法のハサミを手に入れて、面倒な手作業からサクッと卒業しましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント