Table of contents
在与 VBA 在Excel中,我们经常需要在工作表中连接字符串(s)和变量(s)。 在本文中,我将向你展示如何在工作表中连接字符串(s)和变量(s)。 VBA 我将用适当的例子和说明来解释这些事情。
在Excel VBA中串联字符串(s)和变量(s)(快速查看)
下载实践工作手册
下载这本练习手册,在阅读本文时进行练习。
连接字符串和变量.xlsm在Excel VBA中串联字符串(s)和变量(s)(逐步分析)
首先,让我们看看如何将字符串(s)和变量(s)连接起来。 VBA 一步一步来。
⧪ 连接字符串(s)。
要连接两个或更多的字符串,在 VBA ,你可以同时使用算术 加法 (+) 符号和 安培字(& ) 符号。
例如,要串联的字符串是 "伟大的期望" 和 "双城记" 与一个 逗号 ,你可以使用。
New_String = "《远大前程》" + ", " + "《双城记》"
或者。
New_String = "远大前程" & ", " & "双城记"
运行上述任何代码,它将显示连接的输出。 远大前程》、《双城记》。 .
⧪ 串联变量(s)
如果所有变量都包含字符串值,那么你可以同时使用算术 加法 (+) 符号和 安培号(&) 符号。
但如果他们不这样做,那么你可以只使用 安培号(&) 符号来连接。
例如,我们有两个变量。 A 和 B .
A 包含一个字符串。 "双城记" ,以及 B 包含另一个字符串。 "爱的四十条规则" .
你可以同时使用 加法 (+) 符号和 安培号(&) 符号来连接它们。
A = "双城记" B = "爱情四十条" New_String = A + ", " + B
或者。
A = "双城记" B = "爱情四十条" New_String = A & ", " & B
在这两种情况下,它们都会返回串联的字符串。
但如果 A 是一个字符串( "双城记" )和 B 是一个整数( 27 ),你必须使用 安培号(&) 符号来连接。
A = "双城记" B = 27 New_String = A & ", " & B
它将返回串联的输出。
在Excel VBA中串联字符串和变量的例子(涉及宏、UDF和用户表格)
我们已经学会了用以下方法来连接字符串(s)和变量(s)。 VBA 这一次我们将探讨一些例子,涉及将字符串(s)和变量(s)用 VBA .
例1:在Excel VBA中开发一个串联字符串(s)和变量(s)的宏程序
我们已经学会了用以下方法来连接字符串和变量 VBA 这一次,我们将制定一个 宏观 来连接工作表中多列的字符串和变量。
这里我们有一个数据集,其中有 书名 , 作者 ,以及 价格 一个叫马丁书店的书店的一些书。
让我们制定一个 宏观 来连接列 1, 2, 和 3 的数据集 B4:D14 在细胞中 F4 .
ǞǞǞ VBA 代码将是。
⧭ 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_Number 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 代码将是。
⧭ 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 输出1(i - 1, 0) = Value1.Cells(i, 1) &。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 结束函数
⧭ 输出。
选择你想连接范围的那一列,并输入这个公式。
=ConcatenateValues("She", "H. Rider Haggard",", ")
它将返回 她,H. Rider Haggard 作为输出。
再次,输入公式。
=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中串联(3种合适的方法)
类似的阅读。
- 如何在Excel中把两个或多个单元格的文本合并到一个单元格中(5种方法)
- 在Excel中把行合并为一个单元格
- 在Excel中串联数字(4个快速公式)
- 在Excel中合并文本(8种合适的方法)
- 如何在Excel中串联撇号(6种简单方法)
例3:在Excel VBA中开发一个用户表格来连接不同工作表中的字符串(s)和变量(s)。
我们已经学会了开发一个 宏观 和一个 用户定义的功能 来连接字符串和值。 最后,我们将开发一个 用户表格 将字符串和数值连接到所需工作表的预期位置。
⧪ 第一步:插入用户表格
转到 Insert> UserForm 中的选项。 VBA 工具栏,插入一个新的 用户表格 .
⧪ 第2步:将工具拖到用户表格中
A 用户表格 叫做 用户表格1 将被打开,同时还有一个 工具箱 叫做 控制 .
将你的鼠标移到该 在 "工具箱 "中拖动2个列表框、5个文本框、7个标签和1个手动按钮到UserForm。 .
改动显示的 标签 如图所示。
同样地,改变显示的 命令按钮 至 认可 .
⧪ 第三步:为TextBox1编写代码
双击 文本框1 . A 私人子程序 叫做 纹理框1_变化 将打开,在那里输入以下代码。
Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task: x = 5 End Sub
⧪ 第四步:为TextBox3编写代码
同样地,双击 文本框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) +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 Exit Sub Task: x = 5 End Sub
⧪ 步骤5:为TextBox4编写代码
同时,双击 文本框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 .当 私人子程序 叫做 列表框2_点击 打开,在那里输入这个代码。
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
⧪ 第七步:为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 Unload UserForm1 Exit Sub Message。MsgBox "正确选择所有选项。", vbExclamation End Sub
⧪ 第7步:编写运行用户表格的代码
现在是最后一步。 插入一个新的 模块 从 VBA 工具栏,并插入以下代码。
Sub Run_UserForm() UserForm1.Caption = "Concatenate Values" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = ActiveSheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyleSingle 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.BorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i Load UserForm1 UserForm1.Show End Sub
⧪ 步骤8:运行用户表格
你的 用户表格 要运行它,从工作表中选择数据集(包括 标题 )并运行 宏观 叫做 运行_用户表格 .
ǞǞǞ 用户表格 选定的范围地址将显示在 文本框1 ( B3:D4 如果你愿意,你可以改变它。 工作表中选定的范围将改变。
选择你想连接的列,从 串联的列 列表框,这里我选择了 书名 和 价格 .
输入 分离器 .在这里,我已经进入了一个 逗号 ( , ).
选择你想把串联的范围放在哪里的工作表名称,从 串联在一起的 列表框,在这里我输入了 第三张 .
(当你选择工作表的时候,它就会被激活,即使它不是活动的工作表)。
然后插入 输出位置 它是连接区的第一个单元格的单元格引用。 在这里我把 B3 .
(当你进入 输出位置 ,输出范围将被选中)。
最后,输入 输出头 (输出范围的标题)。 在这里我把 串联的范围 .
(当你把 输出头 ,输出列的标题将被设置)。
点击 认可 你会在所需的位置上得到所需的输出。
阅读更多:如何使用VBA将字符串和整数连接起来
总结
因此,这些是你可以使用Excel的几个例子 VBA 来连接字符串和变量。 希望这些例子能让你明白一切。 你有什么问题吗? 请随时问我们。 不要忘记访问我们的网站 ǞǞǞ 以了解更多帖子和更新。