目次
と連携しながら ブイビーエー Excelでは、ワークシート上で文字列(s)と変数(s)を連結することがよくあります。 文字列(s)と変数(s)の連結は、学生の成績のまとめから複雑なビジネスの分析まで、仕事のほぼすべての分野で広く使われています。 この記事では、ワークシート上で文字列(s)と変数(s)を連結する方法について説明します。 ブイビーエー ここでは、例題と図解を交えて説明します。
Excel VBAで文字列(s)と変数(s)を連結する(クイックビュー)
練習用ワークブックをダウンロードする
この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。
文字列と変数を結合する.xlsmExcel 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を使ったいくつかの例をご紹介します。 ブイビーエー を使って文字列と変数を連結することができます。 この例ですべてが明らかになったと思います。 何か質問がありましたら、お気軽にお問い合わせください。 また、当社のサイト エクセルウィキ をご覧ください。