Excelの標準機能にも「データ」タブに「区切り位置」がありますが、これをプログラム(VBA)で動かすのがTextToColumnsメソッドです。
まさに「あらかじめ指定したルールに従って、一瞬でデータを切り分ける自動カッター」のようなイメージになります。
「カンマのところで切ってね」「スペースのところで切ってね」と命令するだけで、隣のセルへ綺麗に流し込んでくれます。
【コピペOK】データ分割を自動化するコード
まずは、カンマで区切られたA列のデータを分割するコードを見てみましょう。
Sub SplitData()
' A列にあるデータをカンマで区切って分割します
' 万が一失敗してもいいように、まずはテスト用データでお試しください
Range("A:A").TextToColumns _
Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=False
MsgBox "分割が終わりました!"
End Sub
押さえておきたい!重要引数のカンタン解説
英語の羅列に一瞬戸惑うかもしれませんが、実務で意識すべきポイントは3つだけになります。
- Destination: 「どこから分割を出力するか」を指定します。Range(“A1”)にすると、元のA列を上書きする形で分割されます。
- DataType:xlDelimitedを指定することで、「特定の文字(カンマやスペースなど)で区切る」という設定になります。
- Comma: ここをTrueにするとカンマで区切られます。もしスペースで区切りたい場合は、代わりにSpace:=Trueとするだけで対応可能です。
【私の失敗談】既存データの「上書き」には要注意!
実は私、このVBAを初めて実務で導入した際に、大きな失敗をしてしまったことがあります。
データが右側のセルへ展開されることを失念しており、元々入力されていた「大切な備考欄のデータ」をすべて上書きして消し去ってしまったのです。事前のバックアップも取っておらず、その瞬間は本当に顔が真っ青になりました。。。
みなさんが使用される際は、実行前に「分割されたデータが展開される場所に、上書きされて困るデータがないか」を必ずご確認ください。
もし少しでも不安がある場合は、Destination:=Range(“B1”)のように、右側の空いている列を出力先に指定しておくと安心です。
データの整理作業が一瞬で終わる心地よさを、ぜひ体感してみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント