エクセルVBAで文字列と変数を連結する方法(詳細分析)

  • これを共有
Hugh West

と連携しながら ブイビーエー Excelでは、ワークシート上で文字列(s)と変数(s)を連結することがよくあります。 文字列(s)と変数(s)の連結は、学生の成績のまとめから複雑なビジネスの分析まで、仕事のほぼすべての分野で広く使われています。 この記事では、ワークシート上で文字列(s)と変数(s)を連結する方法について説明します。 ブイビーエー ここでは、例題と図解を交えて説明します。

Excel VBAで文字列(s)と変数(s)を連結する(クイックビュー)

練習用ワークブックをダウンロードする

この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。

文字列と変数を結合する.xlsm

Excel VBAで文字列(s)と変数(s)を連結する(ステップバイステップ分析)

まず、文字列(s)と変数(s)を連結する方法について説明します。 ブイビーエー ステップバイステップで

⧪ 文字列を連結する (s):

の2つ以上の文字列を連結するには、以下のようにします。 ブイビーエー の両方が使用できます。 かさん シンボルと アンパーサンド )の記号を使用します。

例えば、文字列を連結する場合 "大いなる期待" "二都物語" を持っています。 カンマ を、使用することができます。

 New_String = "Great Expectations" + ", " + "A Tale of Two Cities" (二都物語 

あるいは

 New_String = "Great Expectations" & ", " & "A Tale of Two Cities". 

上記のいずれかのコードを実行すると、連結された出力が表示されます。 グレートエクスペクテーション、二都物語 .

⦹連続変数(s)

すべての変数に文字列の値が含まれている場合は、算術演算の両方が使用できます。 かさん シンボルと アンパーサンド の記号を使用します。

しかし、もしそうでない場合は、唯一の方法である アンパーサンド シンボルで連結します。

例えば、2つの変数があるとします。 A B .

A には文字列が含まれます。 "二都物語" そして B は別の文字列を含んでいます。 "恋の四十則" .

の両方を使用することができます。 かさん 記号と アンパーサンド 記号で連結します。

 A = "二都物語" B = "恋愛四十則" New_String = A + ", " + B 

あるいは

 A = "二都物語" B = "恋愛四十則" New_String = A & ", " & B 

どちらの場合も、連結された文字列が返されます。

しかし、もし A は文字列( " 二都物語 " ) と B は整数( 27 ) を使用する必要があります。 アンパーサンド シンボルで連結します。

 A = "A Tale of Two Cities" B = 27 New_String = A & ", " & B 

連結された出力が返されます。

Excel VBAで文字列と変数を結合する例(マクロ、UDF、UserFormを含む)

で文字列(s)と変数(s)を連結することを学びました。 ブイビーエー 今回は、文字列 (s) と変数 (s) を連結する例を紹介します。 ブイビーエー .

例1:Excel VBAで文字列(s)と変数(s)を連結するマクロを開発する場合

で文字列や変数を連結することを学びました。 ブイビーエー を開発します。 マクロ で、ワークシートの複数列の文字列や変数を連結することができます。

ここで、データセットに 書名 , 執筆陣 そして 諸費用 マーティン書店という本屋さんの何冊かの本のうち

を開発しよう。 マクロ 列を連結する 1, 2, 3 データセットの B4:D14 細胞内 F4 .

があります。 ブイビーエー のコードになります。

⦹ VBAコードです。

 Sub Concatenate_String_and_Variable() Dim Rng As Range Set Rng = Range("B4:D14") Dim Column_Numbers() As Variant Column_Numbers = Array(1, 2, 3) Separator = ", " Output_Cell = "F4" For i = 1 To Rng.Rows.Count Output = "" For j = LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)))& Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Range(Output_Cell).Cells(i, 1) = Output Next i End Sub 

⧭出力。

このコードを実行すると 3 の範囲内で連結された列です。 F4:F14です。

続きを読む: Excelで複数の列を連結するマクロ(UDFとUserForm付き)

例2:Excel VBAで文字列(s)と変数(s)を連結するユーザー定義関数を作成する場合

を開発することを学びました。 マクロ を使用して、データセットの複数の列を連結することができます。 ユーザー定義関数 Excelで文字列や変数を連結する方法です。

コンプリート ブイビーエー のコードになります。

⦹ VBAコードです。

 Function ConcatenateValues(Value1, Value2, Separator) If VarType(Value1) 8204 And VarType(Value2) 8204 Then ConcatenateValues = Value1 & Separator & Value2 ElseIf VarType(Value1) = 8204 And VarType(Value2) 8204 Then Dim Output1() As Variant ReDim Output1(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output1(i - 1, 0) = Value1.Cells(i, 1) &.Value1 (Value2)-1 (Value1.Rows.Count) Fori (Value2) -0) Then Dim Value2 (Value2) = 8205 (Value3) -2) Then (Value3, Value4) -2) (Value4) -2) (Value4) = 0 (Value4) -2) (Value4) -2)Separator & Value2 Next i ConcatenateValues = Output1 ElseIf VarType(Value1) = 8204 And VarType(Value2) = 8204 Then Dim Output2() As Variant ReDim Output2(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output2(i - 1, 0) = Value1.Cells(i, 1) & Separator & Value2.Cells(i, 1) Next i ConcatenateValues = Output2 End If End Function 

⧭出力。

範囲を連結したい列を選択し、この数式を入力します。

=ConcatenateValues("She", "H. Rider Haggard",", ")

それは戻ってくる 彼女、H・ライダー・ハガード を出力とする。

もう一度、数式を入力します。

=ConcatenateValues(B4:B14,30,", ")

[ アレイ式 を押すのを忘れないでください。 Ctrl + Shift + Enter にない限り オフィス365 .]

30と範囲内のすべての値を連結します。 B4:B14 .

最後に入力します。

=ConcatenateValues(B4:B14,C4:C14,", ")

[再度 アレイ式 を押すのを忘れないでください。 Ctrl + Shift + Enter にない限り オフィス365 .]

の範囲にあるすべての値を連結します。 B4:B14 如何に C4:C14 .

続きを読む: ExcelでConcatenateする方法(3つの適切な方法)

類似の読み物。

  • Excelで2つ以上のセルのテキストを1つのセルに結合する方法(5つのメソッド)
  • Excelで行を1つのセルにまとめる
  • エクセルで数字を連結する(4つの簡単な計算式)
  • エクセルでテキストを結合する(8つの適切な方法)
  • エクセルでアポストロフィを連結する方法(6つの簡単な方法)

例3:Excel VBAで異なるワークシートの文字列(s)と変数(s)を連結するユーザーフォームを開発する場合

を開発することを学びました。 マクロ となっており ユーザー定義関数 を開発し、文字列と値を連結します。 最後に ユーザーフォーム を使って、文字列と値を目的のワークシートの目的の場所に連結することができます。

⦹ ステップ1:UserFormを挿入する

に行ってみてください。 Insert> UserForm オプションで ブイビーエー ツールバーを使って、新しい ユーザーフォーム .

⦹ ステップ2:ツールをユーザーフォームにドラッグする

A ユーザーフォーム っていう ユーザーフォーム1 が開かれ、それに伴い ツールボックス っていう 制御 .

の上にマウスを移動させます。 ツールボックスから、リストボックス2個、テキストボックス5個、ラベル7個、コマンボタン1個をUserForm内にドラッグします。 .

の表示を変更します。 ラベル を図に示す。

の表示も同様に変更します。 コマンドボタン まで よっしゃー .

⧪ ステップ3:テキストボックス1のコードを書く

をダブルクリックします。 テキストボックス1 . A プライベートサブプロシージャ っていう TextBox1_Change が開きますので、そこに以下のコードを入力してください。

 Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.TextBox1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task: x = 5 End Sub. 

⧪ ステップ4:テキストボックス3のコードを書く

同様に、ダブルクリックで テキストボックス3 . もう一つ プライベートサブプロシージャ っていう テキストボックス3_変更 が開きますので、そこに以下のコードを入力してください。

 Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Starting_Cell, i, 1))>= 48 And Asc(Mid(Starting_Cell, i, 1)) <= 57 Then Col = Left(Starting_Cell, i - 1) Row = Right(Starting_Cell, Len(Starting_Cell) - i + 1) End_Range = Col + Right(Int(Row) + Str(Row)) & Len(Starting_Cell) & i (i) & (1) & Row = Row(Starting_Cell) & (I, 1) & Ren(Starting_Cell) & (1, 1) & (1,3,3, 3) & Ren(I,1,3)& (4, 4) &(I, 4))Range(UserForm1.TextBox1.Text).Rows.Count - 1), Len(Str(Int(Row) + 10) - 1) Set Rng = Range(Starting_Cell + ":" + End_Range) Rng.Select Exit For End If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text 終了Sub Task: x = 5 End Sub 

⧪ ステップ5:テキストボックス4のコードを書く

また、ダブルクリックで テキストボックス3 . もう一つ プライベートサブプロシージャ っていう テキストボックス3_変更 が開きますので、そこに以下のコードを入力してください。

 Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ ステップ6:ListBox2用のコードを書く

をダブルクリックします。 リストボックス2 .その時 プライベートサブプロシージャ っていう ListBox2_Click が表示されたら、そこにこのコードを入力してください。

 Private Sub ListBox2_Click() Reserved_Address = Selection.Address For i = 0 To UserForm1.ListBox2.ListCount - 1 If UserForm1.ListBox2.Selected(i) = True Then Worksheets(UserForm1.ListBox2.List(i)).Activate Range(Reserved_Address).Select Exit For End If Next i If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ ステップ7:CommanButton1用のコードを書く

また、ダブルクリックで コマンドボタン1 .その後 プライベートサブプロシージャ っていう コマンドボタン1_変更 が開いたら、そこに以下のコードを挿入してください。

 Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.Text) Dim Column_Numbers() As Variant Count = 0 For i = 0 To UserForm1.ListBox1.ListCount - 1 If UserForm1.ListBox1.Selected(i) = True Then ReDim Preserve Column_Numbers(Count) Column_Numbers(Count) = i + 1 Count = Count + 1End If Next i Separator = UserForm1.TextBox2.Text Output_Cell = UserForm1.TextBox3.Text For i = 0 To UserForm1.ListBox2.ListCount-1 If UserForm1.ListBox2.Selected(i) = True Then Sheet_Name = UserForm1.ListBox2.List(i) Exit For End If Next i Worksheets(Sheet_Name).Range(Output_Cell).Cells(1, 1) = UserForm1.TextBox4.Text For i = 2 To Rng.Rows.Count Output = "" For j= LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) & Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i UserForm1 Unload Exit Sub Message.Message(Column_Numbers)MsgBox "すべてのオプションを正しく選択してください。", vbExclamation End Sub 

⦹ ステップ7:UserFormを実行するためのコードを書く

最後のステップです。 モジュール から ブイビーエー ツールバーに以下のコードを挿入してください。

 Sub Run_UserForm() UserForm1.Caption = "Concatenate Values" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = Activeheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox1.Clear For i = 1 To Selection.Columns.Count UserForm1.ListBox1.AddItemSelection.Cells(1, i) Next i UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i UserForm1を読み込む UserForm1.Show End Sub 

⦹ ステップ 8: UserForm を実行する

あなたの ユーザーフォーム 実行するには、ワークシートからデータセットを選択します。 ヘッダー ) を実行し マクロ っていう Run_UserForm(ユーザーフォーム .

があります。 ユーザーフォーム を選択すると、すべてのオプションがロードされ、選択した範囲のアドレスが テキストボックス1 ( B3:D4 ここで)変更することができます。 ワークシートの選択範囲が変更されます。

から連結したい列を選択します。 連結する列 リストボックス。 書籍名 価格 .

を入力します。 セパレーター .ここで、私が入力したのは カンマ ( , ).

連結した範囲を入れるワークシート名を で結合された を入力しました。 シート3 .

(アクティブなシートでなくとも、選択した瞬間にアクティブになります)。

そして、挿入します。 出力先 これは,連結された範囲の最初のセルの参照です. B3 .

(入力した瞬間に 出力先 の場合、出力範囲が選択されます)。

そして最後に、その名前を入力します。 出力ヘッダー (出力範囲のヘッダー)です。 連結範囲 .

(を入れた瞬間)。 出力ヘッダー の場合、出力列のヘッダが設定されます)。

クリック よっしゃー 希望する場所に希望する出力が得られます。

続きを読む: VBAで文字列と整数を連結する方法

結論

そこで、Excelを使ったいくつかの例をご紹介します。 ブイビーエー を使って文字列と変数を連結することができます。 この例ですべてが明らかになったと思います。 何か質問がありましたら、お気軽にお問い合わせください。 また、当社のサイト エクセルウィキ をご覧ください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。