【VBA】列全体に区切り位置機能をする方法
こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!
今回はこのような悩みについて解説します。
カンマやスペースで区切られたデータを分割したい。
マクロの中に組み込みたいけど記述方法がわからない。
CSVデータなどはデータをカンマ区切りしており、そのままではExcelで扱うことができません。
このような場合はExcelに備わっている区切り位置機能を使いましょう。
この記事では自動化マクロの中で、区切り位置機能も組み込みたいという方へ向けて、記述方法とよく使う引数について解説します。
- 区切り位置機能の記述方法
- 列全体にメソッドをかける方法
区切り位置機能のサンプルコード
Range("A1").EntireColumn.TextToColumns Destination:=Range("B1"), _
DataType:=xlDelimited, Space:=True
図1のようなデータが入力されたファイルにサンプルコードを実行してみます。
このように図2では各セルに1つ1つデータを分割して保存することができました。
区切り位置機能の記述方法について
次に記述方法を解説します。
区切り位置機能をかけるにはTextToColumnsメソッドを使います。
TextToColumns (Destination, DataType, TextQualifier, consecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers)
公式ドキュメントにはこのように書かれており、一見難しそうに見えますね。
こんなに引数指定が大量にありますが、これらのほとんどは省略可能です。
細かく指定できるんだなくらいに留めておき、必要なものだけを記述していきましょう。
よく使う記述方法について
次によく使われる列全体に区切り位置機能を設定する記述について解説していきます。
オブジェクト.EntireColumn.TextToColumns Destination:=オブジェクト, _
DataType:=xlDelimited, Space:=True
オブジェクトの部分にはRange(“A1”)のようにセルの場所を指定してください。
このように全てを記述するわけではなく指定したい部分のみ記述し、省略可能な引数は記述しなくても大丈夫です。
「Destination:=」はメソッドをかけた後のデータをどこに貼り付けるかを指定できます。
「DataType:=」は何を基準にデータを区切るのかを次の2つから指定できます。「xlDelimited」と「xlFixedWidth」
2つありますが、区切り文字を自分で指定できる「xlDelimited」を使いましょう。
DataType:=xlDelimited, Space:=True
「xlDelimited」はカンマやタブなどの区切り文字で区切られたデータを分割することができます。
区切り文字は他にも「Tab」、「Semicolon」、「Comma」などがありますのでデータの種類によって使い分けてください。
まとめ
- 区切り位置機能はTextToColumnsメソッドを使う
- 「DataType」は「xlDelimited」を使って区切り文字を指定する
今回は区切り文字設定をVBAでどのように記述すればよいかを解説しました。
一見難しそうに見えるかもしれませんが、記述方法自体は単純なのでぜひ使ってみてください。
私も業務改善でこのメソッドは使用したことがあり、非常に便利だったため解説させていただきました!
この記事で少しでも皆さんのお役に立てれば幸いです!
忘れないうちにお気に入り登録もお願いします!
ありがとうございました!
コメントはお気軽に!