F0000030_csv形式の文字列を配列へ変換する

csv形式の文字列を配列へ変換する 関数リファレンス

この関数について

ExcelVBA(マクロ)でcsvデータを加工するとき、単純にExcelで開いてしまうと「”(ダブルクォーテーション)」が消えてしまったり、数値データの先頭の0が消えたりしてしまいます。そのためテキストデータをシートを介さず変数に取り込み加工をするとデータを破損させずに済みます。また、置換処理程度であれば文字列変数上の操作で足りますが、データをレコードとカラムに分解して、条件によって加工内容を変化させるというような場合は、csvデータを配列に取り込むと操作が楽になります。このページで紹介する関数は、csv形式の文字列を配列に変換します。

関数コピペ ~コードをクリックするだけでコピー完了!~



使い方 ①引数

第1引数:target_str
 変換対象のcsv形式の文字列です。

第2引数:row_separater
 csv形式の文字列をレコード(行)に分解するときに使用するセパレーター(区切り)文字を指定します。なにもしていしないと改行文字(CrLF)を渡したとみなします。

第3引数:col_separater
 csv形式の文字列をカラム(列)に分解するときに使用するセパレーター(区切り)文字を指定します。なにもしていしないと「,(カンマ)」を渡したとみなします。

使い方 ②戻り値

csv形式の文字列を変換した文字列型の配列を返します。なお、データに含まれる「”」は削除してしまうため、配列での操作完了後、csv形式の文字列に戻すときに「”」を復元する必要があります。

サンプルコード(クリックでコピー)






補足:代替手段について

この関数は私がマクロ開発をはじめてすぐ初期の頃~高度成長期の頃まで使用していた関数であり、現在この関数を私はほぼ使用することはありません。この関数はデータに含まれる改行文字や「”」「,」を判定する方法がなくこれらの文字が含まれた項目を持つデータの変換時にはエラーが発生します。事前のデータクレンジングが必須です。現在は代替手段としてADO(ActiveX Data Objects)を使用して私はcsvの読み込み・配列への取り込みを実現しています。この方法については別記事で関数として紹介をします。ほぼ上位互換の機能を持っているため、置き換えをしました。詳細の解説はしませんが、一つだけ差別化できる点あげると、csvデータをデータベースとして扱うADOに対し、文字列として変換をするこの関数は一定規模のデータ操作については、ADOの処理速度を上回ります。

【結果】csv形式の文字列を配列に変換することができました

サンプルコードを実行すると、最初イミディエイトウィンドウにサンプルのcsv形式の文字列を書き出します。その後、配列へ変換し、配列の中身をイミディエイトウィンドウに書き出しています。配列に格納された状態では「”」は削除されている点に気を付けましょう。意図的にデータ内に「”」を持たせたかった場合でも自動で削除してしまいます。

関数リファレンスにはコピペで使用可能な便利関数を多数掲載!

関数リファレンスでは私が開発の中で必要になったコード部品を汎用化・関数化して公開しています。この記事で紹介した関数以外にもコピペで利用できる関数を多数用意しています。検索窓から必要な機能を検索してみましょう!解説記事も続々公開中。

Comment