別セル同士の文字列をくっつけるのは面倒
Excelで資料を作成している際に、上下の別セルに書かれた文章を上にセルにまとめたい場合、下のセルの文字列をコピーして、上の文字列の一番後ろに繋げて、、、なんて面倒なことをしなければなりません。
例えばこのように3つのセルを1つにまとめたい場合ですね。
作業自体は簡単ですが、やるとなると本当に面倒です。資料の変更が多い現場でExcelを使っている場合にはなおのことです。
こういう場合に、複数のセルの値をまとめて連結する方法を紹介します。
選択セル範囲の値を連結させる
以下のコードを実行すると選択セルの値を全て連結してアクティブセルに貼り付けます。処理の内容はコメントにほとんど書いているため大体わかると思います。
補足ですが、選択セル範囲の中で白抜きになっているセルがアクティブセルです。選択セル範囲内のアクティブセルは、選択範囲を開始したセルがアクティブセルとして扱われます。
なので、上から下に向かってドラッグすると一番上のセルがアクティブセルになり、逆に下から上に向かってドラッグすると一番下のセルがアクティブセルになります。
結合セルが含まれている場合も正しく処理されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub ConnectString() Dim r As Range '// セル Dim rActive As Range '// アクティブセル Dim s '// 値 '// アクティブセルのRangeオブジェクトを保持 Set rActive = ActiveCell '// 選択セル範囲をループ For Each r In Selection '// アクティブセルではない場合 If r.Address <> rActive.Address Then '// 現セルの値を連結 s = s & r.Value '// 現セルの値をクリア r.Value = "" End If Next '// アクティブセルにその他セルの値を連結 rActive.Value = rActive.Value & s End Sub |
使い方
使い方は「1. 連結したいセルを選択して」「2. マクロを実行する」という流れになります。
1. 連結したいセルを選択(ここではA1セルを開始セルとしてA3セルまでを選択)
2. マクロを実行する