EXCEL VBA 配列の要素を結合・特定の列データを結合・セル同士の結合・文字列を結合する方法(Join関数)

 

 

 

EXCEL VBA 配列の要素を結合・特定の列データを結合・セル同士の結合・文字列を結合する方法(Join関数)

 

 

 

 ●はじめに

今回説明するのは、Join関数の利用方法を説明いたします。Join関数は、配列に格納されている各要素を結合する時に、Join関数を使用します。また、配列をカンマ区切りなどの文字列にする時などに利用します。それでは、サンプルプログラムを交えて順番に説明いたします。

●【Join関数については、下記を参照して下さい】:参考(Microsoft社 様)

https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/join-function

 

 

 

 ●書式の説明

● Join関数を利用するには、下記の通りに設定を行います。

【構文】

● Join(文字列配列,区切り文字)

※文字列配列・・・要素を結合する配列を設定します。(1次元配列)
※区切り文字・・・結合する要素(文字列)を区切る文字(記号)を設定します。
(省略可能・・・省略した場合は、半角スペース)

 

【使用例】
●配列Temp(東京、神奈川、埼玉、千葉)別々の配列をJoinで結合して配列Ansへ代入します。

 

【実行結果】

 

【注意点】
①2次元以上の配列では、Join関数は利用できない。(1次元配列に分割すればOK)
②直接セル範囲は指定する事はできません。(配列に取り込めばOK)

 

 

 

 

 

EXCEL VBA 配列の要素を結合・数値の配列データ251個をひとつに結合する(Join関数)

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、Join関数を使って各配列データをひとつに纏めるサンプルプログラムです。配列データとして0~250(251個)用意して、その個々の配列に配列番号と同じ番号を配列に格納します。その格納したデータをJoin関数で、カンマ区切りで一つに纏めます。

 

【プログラムの流れ】

① 設定した配列0~250(251回)まで繰り返します。
② 各配列に配列番号と同じ番号を格納します。
③   各配列に格納した0~250の配列データをカンマ区切りでひとつ(Ans)に纏めます。
④ 一つにまとめたデータ(Ans)をメッセージボックスで表示します。

 

 

 

 

●実行前~実行後 ※プログラム実行後、配列データ(0~250)として登録されている配列データをカンマ区切りで結合してメッセージボックスで表示されました。
(画面クリックして拡大)

 

 

 

 

 

EXCEL VBA セル範囲から2つの配列を作成してその配列を結合します。(Join関数)

 

 

 

 ●プログラム説明 (サンプル②)

下記のサンプルプログラムは、セル範囲(A列~B列)を指定して、そのセル範囲データを配列データとして2次元配列で取り込み、A列・B列ごとに1次元配列に分割して、分割格納したデータをJoin関数で”ー”ハイホン区切りで一つに纏めます。(A列とB列のデータを結合します)2次元配列でも1次元配列に分割する事で、Join関数を利用する事が出来ます。

 

【プログラムの流れ】
① B列の最終行を取得します。
② ワークシートのセルA1~B10(最終行)の範囲を2次元配列で取り込みます。
③ 2次元配列で取り込んだA列データを配列(Temp01)へ移行します。
④ 2次元配列で取り込んだB列データを配列(Temp02)へ移行します。
⑤ 仮の配列(Ans)を再定義して正確な配列個数を指定します。
⑥ Temp01(A列)配列分を繰り返します。
⑦ Temp01(A列)とTemp02(B列)の配列を結合します。 ⑥へ
⑧ 結合した配列データを”ー”アンダーバー区切りで、一つに纏めます。
⑨ メッセージボックスで結合した結果を表示します。

【プログラム実行条件】
・ワークシートのA列とB列に同じ件数を登録します。
・セル範囲については、A列・B列は固定です。行数の指定はありません。

 

 

 ●実行前~実行後 ※プログラム実行後、2次元配列として指定範囲(セルA1:B10)を取り込み、A列・B列を別々の配列データに分けて、2つの配列を結合して、Join関数を利用して配列データを一つに纏めました。
(画面クリックして拡大)

 

 

 

 

 

EXCEL VBA 複数の列データを一つ列に結合して転記します。(列単位の文字列結合・大量データ処理・高速に結合)
※Join関数は使用していません。

 

 

 

 ●プログラム説明 (サンプル③)

下記のサンプルプログラムは、列ごとのデータを行単位で複数の列データを結合して、指定したセルへ転記するサンプルプログラムです。なお、今回のプログラムでは、Join関数は使用していませんが、大量のデータを行単位で複数列を結合する時にとても便利だと思います。セルデータを配列へ取り込み結合処理する事で高速に処理する事が出来ます。
テスト的に2万件作成し、下記のサンプルプログラムをの実行しましたが、一瞬(約1秒)でA列・B列・C列のデータがE列へ結合されました。

【プログラムの流れ】

① C列の最終列を取得します。
② A1~C列の最終行までデータを2次元配列へ登録します。
③ 2次元配列へ取り込んだA列のデータTemp01へ分割(1次元配列)します。
④ 2次元配列へ取り込んだB列のデータTemp02へ分割(1次元配列)します。
⑤ 2次元配列へ取り込んだC列のデータTemp03へ分割(1次元配列)します。
⑥ 結合する配列StrをA列の配列件数分に再定義します。
⑦ A列の配列件数分繰り返します。
⑧ A列配列(Temp01)・B列配列(Temp02)・C列配列(Temp03)のデータを配列(Str)へ結合します。
⑨ 結合したデータ全てをE列に転記します。

【プログラム実行条件】

・A列・B列・C列共に同じ件数のデータを作成する。

 

 

 ●実行前~実行後 ※プログラム実行後、ワークシートに登録されているA列(氏名)・B列(性別)・C列(出身地)を結合してE列へ全データを転記しました。配列を利用する事で高速に処理を実行する事が出来ました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。