目次
Excelでは、2つの文字列を結合して1つの文字列にすることを「連結」といいます。 簡単に言うと、ある列に姓、別の列に名を書いた表があった場合、連結の手続きを使って、一瞬で1つのセルに連結して結合します。 Excelでは、次のような関数があります。 CONCATENATE () を使えば、この連結を行うことができます。 しかし ブイビーエー このような関数は許されません. CONCATENATE () というのは、VBAのコードではうまくいかないからです。 ブイビーエー には組み込み関数がなく、表計算の関数を利用することができません。 そこで、このレッスンでは ブイビーエー Excel で複数のセル、列、行を結合するための連結。
練習用ワークブックをダウンロードする
この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。
VBA コンカチネート関数.xlsmVBAのConcatenate関数の紹介
Excelには、VBAのConcatenateのための組み込み関数がないと書きましたが、異なる文字列を演算子で組み合わせることで、関数として動作させることができます。 ここでは、アンパサンドを使用します。 (&) をオペレーターとして使用します。
⟴ 構文
文字列1 = " ファーストテキスト"
文字列2 = " セカンドテキスト"
⟴ 返り値
戻り値 文字列1 & 文字列2
Excel VBAのConcatenate関数の4つの異なる使用法
ここでは、4つの異なるアプローチを用いて、連結処理を行います。 ブイビーエー のコードで実現します。
1.VBAの連結でアンパサンド(&)演算子を使ってセルを結合する
下のスクリーンショットに示すように、2つのカラムのデータコレクションがあり、一方のカラムにファーストネーム、もう一方のカラムにラストネームがあります。 2つのカラムをマージすることで、全体の名前を取得することができます。 なぜなら ブイビーエー には連結のための組み込みメソッドがないので、アンパサンドを使います。 (&) オペレータを、以下の説明に従って操作してください。
ステップ1.
- まず最初に アルト + F11 を開いてください。 マクロが使えるワークシート。
- をクリックします。
- 選択 モジュール .
ステップ2.
- 2つのセルを1つにまとめるには、次のようにコピー&ペーストします。 ブイビーエー
Sub Concatenate2() Dim String1 As String Dim String2 As String Dim full_string As String String1 = Cells(5, 2).Value String2 = Cells(5, 3).Value Cells(5, 5).Value = String1 & String2 MsgBox (full_string) End Sub
これです。
- 文字列1 = Cells(5, 2).Value は最初のセル位置 B5 , 行 5, および列 2 .
- 文字列2 = Cells(5, 3).Value は2番目のセルの位置 C5 , 行 5, および列 3 .
- Cells(5, 5).Value = String1 & String2 はリザルトセルの位置 E5 , 行 5 および列 5 .
- 文字列1 & 文字列2 はアンパサンドで結ばれた2つの文字列です。 (&)
ステップ3.
- 保存して押す F5 をクリックしてプログラムを実行します。
したがって、その結果を E5 現在のワークシートのセル。
ステップ4.
- 残りのセルについても同様に手順を繰り返し、下の画像に示すような結果を得ます。
続きを読む: VBA StrCompをエクセルで使う方法(よくある5つの例)
2.VBAのConcatenateでプラス(+)演算子を使ってセルを結合する
前項で説明したように、アンパサンドを (&) 演算子でセル文字列を結合することもできます。 (+) 記号に置き換えます。 (&) オペレーターに依頼する場合は、以下の手順で行ってください。
ステップ1.
- 開くには マクロ をExcelで押します。 アルト + F11 .
- クリック インサート を選択し
- プログラムページを開いたら、以下を貼り付けます。 ブイビーエー
Sub Concatenate2() Dim String1 As String Dim String2 As String Dim full_string As String String1 = Cells(5, 2).Value String2 = Cells(5, 3).Value Cells(5, 5).Value = String1 + String2 MsgBox (full_string) End Sub
これです。
- Cells(5, 5).Value = String1 + String2 は、私たちが使っているこのラインに加えて (+) の代わりにアンパサンド記号を使用します。 (&)
ステップ2.
- 貼り付け後、保存して F5 その結果、セル E5 .
- 最終的な結果を得るには、これまでの手順をもう一度行い、必要なセルを埋めてください。
続きを読む VBA StrConv関数の使い方(5例)
類似の読み物。
- ExcelのVBAでSubを呼び出す方法(4例)
- VBA関数で値を返す(配列と非配列の両方の値)
- ExcelでVBAのDIR関数を使用する方法(7例)
- ExcelでVBAのUCASE関数を使う(4例)
- VBAでInStr関数を使う方法(3例)
3.VBAのConcatenateを使って複数の列を追加する
前2回のアプローチでは、2つのセルを結合する方法を説明しました。 しかし、列全体に適用しようとすると、1つずつ追加していくと時間がかかってしまいます。 ここでは、複数の列をトータルで追加する方法を伝授します。 ブイビーエー のコードになります。
ステップ1.
- まず、開くには マクロ プレス アルト + F11
- 選ぶ モジュール から インサート タブ
- 次に、以下を貼り付けます。 ブイビーエー
Sub ConcatCols() 'B列 & C列をE列に連結 Dim LastRow As Long With Worksheets("Sheet3") LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row With .Range("E5:E" & LastRow) .Formula = "=B5&C5".Value=.数値 End With End With EndSub
これです。
- With Worksheets("シート3") は現在のワークシート名です。
- LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row は最初の列名です。
- With .Range("E5:E" & LastRow) は、結果の戻りセル範囲です。
- .数式 = "=B5&C5" は、範囲の最初のセルを結合するための数式です。
ステップ2.
- そして最後に、保存して F5 をクリックしてプログラムを実行します。
その結果、結果がすべて列で得られることになります。
続きを読む: ExcelでVBA Rndを使う方法(4つのメソッド)
4.VBAのConcatenateを使用して複数の行を結合する
複数のカラムを追加するだけでなく、そのカラムに対応した ブイビーエー 以下のスクリーンショットのように、3つの行を1つに連結します。 連結する手順は以下の通りです。
ステップ1.
- アクティベート用 マクロ をExcelで押します。 アルト + F11 .
- 次に、以下を選択します。 モジュール から インサート
- 行を連結するために ブイビーエー
Sub vba_concatenate() Dim rng As Range Dim i As String Dim SourceRange As Range Set SourceRange = Range("B5:D5") For Each rng In SourceRange i = i & rng & " " Next rng Range("B8").Value = Trim(i) End Sub
これです。
- Set SourceRange = Range("B5:D5") はソースセルの範囲である。
- Range("B8").Value = Trim(i) はリターンセル番号です。
ステップ2.
- 最後に、プログラムを保存して F5 を実行します。
したがって、3 つの行を連結した最終結果は、セル B8 .
続きを読む エクセルで上の行の非表示を解除する方法(7つの方法)
結論
まとめとして、今回の記事で活用方法を分かりやすく説明できたかと思います。 ブイビーエー これらのテクニックを習得して、自分のデータで使ってみてください。 練習帳を見ながら、新しい知識を活用してください。 皆様の暖かいご支援のおかげで、このような勉強会を続けていく意欲が湧いています。
ご不明な点がございましたら、お気軽にお問い合わせください。 また、下記のコメント欄にてご意見をお聞かせください。
があります。 Exceldemy チームは常にお客様のご質問にお答えしています。