コピペで使えるVBA!複数セルの文字を結合するコード。手作業を無くそう!

スポンサーリンク




趣味のプログラム

VBAマクロで文字を結合するコードを紹介します。

結合の方法としてjoin関数を使用しています。

コードをコピーすればすぐに使えます。

コピペ前提なので短さを優先してコードを書きました。

サンプルでは1行だけですが複数行でも対応しています。

また工夫したい方向けにアレンジするポイントも参考にしてください。

スポンサーリンク

カンマで結合

右へ表示

セルA1:D1を選択してマクロを実行

A B C D E
1 aaa bbb ccc ddd

実行後

A B C D E
1 aaa bbb ccc ddd aaa,bbb,ccc,ddd

Sub カンマで結合、右へ表示()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
End Sub

右へ表示、元の文字は削除

セルA1:D1を選択してマクロを実行

A B C D E
1 aaa bbb ccc ddd

実行後

A B C D E
1 aaa,bbb,ccc,ddd

Sub カンマで結合、右へ表示、元の文字は削除()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    Selection.ClearContents
        For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
End Sub

左に表示、元の文字は削除

セルA1:D1を選択してマクロを実行

A B C D E
1 aaa bbb ccc ddd

実行後

A B C D E
1 aaa,bbb,ccc,ddd

Sub カンマで結合、左へ表示、元の文字は削除()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    Selection.ClearContents
        For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(1).Column) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
End Sub

好きな文字で結合

右へ表示

セルA1:D1を選択してマクロを実行

A B C D E
1 aaa bbb ccc ddd

メッセージBOXへハイフンを入力してOK

実行後

A B C D E
1 aaa bbb ccc ddd aaa-bbb-ccc-ddd

 


Sub 好きな文字で結合、右へ表示()
    区切り文字 = InputBox(prompt:="好きな区切り文字を入力してください。", Default:=",")
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), 区切り文字)
    Next
End Sub

右へ表示、元の文字は削除

セルA1:D1を選択してマクロを実行

A B C D E
1 aaa bbb ccc ddd

メッセージBOXへハイフンを入力してOK

実行後

A B C D E
1 aaa-bbb-ccc-ddd

Sub 好きな文字で結合、右へ表示、元の文字は削除()
    区切り文字 = InputBox(prompt:="好きな区切り文字を入力してください。", Default:=",")
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    Selection.ClearContents
        For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), 区切り文字)
    Next
End Sub

左に表示、元の文字は削除

セルA1:D1を選択してマクロを実行

A B C D E
1 aaa bbb ccc ddd

メッセージBOXへハイフンを入力してOK

実行後
A B C D E
1 aaa-bbb-ccc-ddd

Sub 好きな文字で結合、左へ表示、元の文字は削除()
    区切り文字 = InputBox(prompt:="好きな区切り文字を入力してください。", Default:=",")
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    Selection.ClearContents
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(1).Column) = Join(WorksheetFunction.Index(選択範囲, R), 区切り文字)
    Next
End Sub
スポンサーリンク

アレンジするポイント

カンマ以外の区切り文字を使う

ドットにしたい場合はや”,”を”.”に変更する

Sub カンマで結合、右へ表示()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
End Sub

変更後

Sub カンマで結合、右へ表示()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), ".")
    Next
End Sub

複数のコードを合体させる

元のコード

グレー部分が貼り付け場所

Sub カンマで結合、右へ表示()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
#ここへ合体させたいコードを貼り付ける
End Sub

合体させるコード

グレー部分をコピー

Sub カンマで結合、左へ表示、元の文字は削除()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    Selection.ClearContents
        For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(1).Column) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
End Sub

合体後のコード

Sub カンマで結合、右へ表示()
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(Selection.Count).Column + 1) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
    選択範囲 = Range(Cells(Selection(1).Row, Selection(1).Column), Cells(Selection(Selection.Count).Row + 1, Selection(Selection.Count).Column))
    Selection.ClearContents
        For R = 1 To UBound(選択範囲, 1) - 1
        Cells(Selection(1).Row + R - 1, Selection(1).Column) = Join(WorksheetFunction.Index(選択範囲, R), ",")
    Next
End Sub

VBAはどうやって覚える?

プログラムのコードが読めないと、参考にしているコードの理解や自分でプログラムを書くときに時間がかかってしまいます。
そんな時は基礎から学ぶと応用もできるようになり自分の作りたいプログラムがスムーズに作れるようになります。

無料でやるならネット上の学習サイトを参考にするといいです。
こちらはVBAの基礎から説明している無料のWEBサイトになります。

>>基礎から学べるWEBサイトを見てみる


過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。



本を読んでもわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、プログラミングの敷居がとても低くなります。
誰かに相談できるのは心強いです。

>>オンラインスクールを無料体験で始める


タイトルとURLをコピーしました