関数・メソッド

セル内の区切られたデータを複数の列に分割する【TextToColumnsメソッド】【ExcelVBA】

TextToColumnsメソッド

ひとつのセルに入力されているカンマやスペースで区切られたデータを、複数列に分割する機能です。
氏名をスペースで区切ることはよくありますが、その姓と名を別々のセルに分けたいようなときなどに使います。

構文
Object.TextToColumns ( Destination, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers )

Object Range オブジェクトを表す変数です。
Destination 分割したデータの表示先を指定します。
DataType 複数の列に区切るデータの形式を、XlTextParsingType の定数で指定します。
・ xlDelimited は区切り文字によってデータを分割します。
・ xlFixedWidth は固定した長さでデータを分割します。
TextQualifier 文字列の引用符に(“)or(‘)を使用するか、または引用符を使用しないかどうかをXlTextQualifier(下記)の定数で指定します。
ConsecutiveDelimiter True を指定すると、連続する区切り記号を1つの区切りと見なします。既定値は False。
Tab 区切り文字がタブ文字の場合Tureを指定します。 既定値は False。
Semicolon 区切り文字がセミコロン (;) の場合Tureを指定します。 既定値は False。
Comma 区切り文字がコンマ (,) ですの場合Tureを指定します。 既定値は False。
Space 区切り文字がスペースですの場合Tureを指定します。 既定値は False。
Other 区切り文字がタブ、セミコロン、コンマ、スペース以外の文字の場合、Tureを指定します。 既定値は False。
OtherChar Other が True の場合は必須です。Other が True の場合の区切り文字を指定します。
Fieldinfo 区切り後の列のデータ形式に関する情報を持つ配列を指定します。
XlTextQualifier 説明
xlTextQualifierDoubleQuote 1 ダブルクォーテーション (“)
xlTextQualifierSingleQuote 2 シングルクォーテーション(‘)
xlTextQualifierNone -4142 引用符なし

 

Fieldinfo

引数 Fieldinfo は Array を使い、何文字目で分割するかを指定できます。

Array(何文字目,文字列形式)

※文字列形式については以下を参照してください

xlGeneralFormat 1 一般形式
xlTextFormat 2 テキスト形式
xlMDYFormat 3 MDY (月日年)日付形式
xlDMYFormat 4 DMY 日付形式
xlYMDFormat 5 YMD 日付形式
xlMYDFormat 6 MYD 日付形式
xlDYMFormat 7 DYM 日付形式
xlYDMFormat 8 YDM 日付形式
xlSkipColumn 9 列の解析なし
xlEMDFormat 10 EMD日付形式

 

ユーザー設定リストを追加し、削除するサンプルコード

Public Sub Sample()
 
  '■A1セルに入力されているデータを分割する
  '表示先はB1セル
  '区切り文字はスペース
  Range("A1") = "姓 名"   'A1セルに入力(名前)
  Range("A1").TextToColumns Destination:=Range("B1"), _
                            DataType:=xlDelimited, _
                            Space:=True
                            
  '■文字数を指定して分割する場合
  Range("A2") = 1638001     'A2セルに入力(郵便番号)
  Range("A2").TextToColumns Destination:=Range("B2"), _
                            DataType:=xlFixedWidth, _
                            FieldInfo:=Array(Array(0, 1), Array(3, 1))

End Sub

 

コメント