【EXCEL VBA | イミディエイトウィンドウ】セルの範囲の文字列を結合して1つのセルに書き出す

スポンサーリンク

セルの範囲の文字列を結合して1つのセルに書き出す

イミディエイトウィンドウとは、VBA(Visual Basic for Application)を利用する時に使うVBE(EXCELなどに付属しているプログラムの開発環境のエディター/Visual Basic Editor)で使用することができる機能で、主にコードの実行結果を試すなど、デバッグする時に使うものです。

イミディエイトウィンドウにVBAコードを書いて、一気に処理する方法を説明しています!

今回は、「セルの範囲の文字列を結合して1つのセルに書き出す」方法です。

↓イミディエイトウィンドウの立ち上げ方などはこちら

【EXCEL VBA】イミディエイトウィンドウを使う
イミディエイトウィンドウとは イミディエイトウィンドウとは、VBA(Visual Basic for Application)を利用する時に使うVBE(EXCELなどに付属しているプログラムの開発環続きを読む

使い方

前提:指定したセルの範囲の文字列を結合して、別のセルに書き出します。指定する範囲は1列か1行です。

ネットや他のアプリケーションからコピペした時に、一つのセルに収まって欲しいのに、行や列が分かれちゃうことがあります。

「CONCATENATE関数」「CONCAT関数」「TEXTJOIN関数」「”&”演算子」など文字列を結合する関数はワークシート関数にも用意されていますが、今回はイミディエイトウィンドウでVBAのコードでやってみたいと思います。

1列の結合

【サンプル】

適当な文章ですが、1列で行に分かれた文章が入っています。C2セルに結合した文章を表示させたいと思います。

コード

ちゃんとしたコード

Range("C2").value=Join(Evaluete("Transpose(A2:A6)"),"")

省略コード

[c2]=join([transpose(a2:a6)],"")

Join関数というVBAの関数を利用しています。第1引数に配列を入れて、第2引数に結合した要素の区切りを何にするかを指定します。今回はそのまま繋げたいので、第2引数には「””」空白と言うか何もなしを指定しています。

TRANSPOSE関数はワークシート関数です。普通にEXCELシートでも使えます。引数で指定したセルの範囲の、行と列を切り替えて配列に変換します。※ブログの最後におまけで詳しく説明します。

TRANSPOSE関数で配列にしたセルの範囲を、Join関数の引数に指定してくっつけているという感じです。

「Alt + F11」でVBEを開きます。イミディエイトウィンドウに上記のコードを入力して「Enter」で実行して下さい。

実行動画

結果画面です。

1行の結合

【サンプル】

今度は、1行に文章が入っているバージョンです。A5セルに結合した文章を表示させたいと思います。

コード

ちゃんとしたコード

Range("A5").value=Join(Evalute("Transpose(Transpose(A2:E2))"),"")

省略コード

[a5]=join([transpose(transpose(a2:e2))],"")

一列の時とはTRANSPOSE関数の使い方が違いますね。先程説明した通り、TRANSPOSE関数は、指定したセルの範囲の行列を入れ替えて配列にします。

Join関数には、横につながった配列を入れたいので、横の範囲からTRANSPOSE関数で縦の配列にしたものをもう一回TRANSPOSE関数で横の配列に変換してから、Join関数の引数に入れています。

「Alt + F11」でVBEを開きます。イミディエイトウィンドウに上記のコードを入力して「Enter」で実行して下さい。

実行動画

結果画面です。

以上で完成です!

おまけ TRANSEPOSE関数

ワークシートでTRANSPOSE関数を実行しています。

A5セルに、「=TRANSPOSE(A2:E2)」と入力されており、A2:E2のセル範囲をは縦の配列に変換しているのが分かります。

A19セルには「=TRANSPOSE(A13:A17)」と入力されており、A13:A17のセル範囲を横の配列に変換しているのが分かります。

Join関数には横の配列を入れたいので、変換して縦になってしまった場合は、再度TRANSPOSE関数を実施して、横に変換していたんですね。

横の配列、縦の配列と表現していましたが、プログラミングの言い方では、横の配列を1次元配列、縦の配列を2次元配列と呼びます。

構造などは、本ブログの趣旨からは外れるので割愛しちゃいます。興味がある方は、ググってみて下さい。

まとめ

以前は、「CONCAT関数」がなかったので(今でもバージョンによっては使えない)、「CONCATENATE関数」や「”&”演算子」でポチポチやるよりは楽だったんでしょう。今は「CONCAT関数」使った方が早いですね、笑

オススメの本

VBAはこの本きっかけだったな~