Table of contents
实施 VBA 是在Excel中运行任何操作的最有效、最快速和最安全的方法。 在这篇文章中,我们将向你展示如何在Excel中使用以下方法检查一个字符串是否包含另一个字符串 VBA .
下载实践模板
你可以从这里下载免费的练习Excel模板。
VBA检查字符串是否包含值.xlsm
在VBA中检查Excel中字符串是否包含另一个字符串的6种方法
在本节的下面,你会发现6种有效的方法,即如何实施 VBA 来检查一个字符串是否包含另一个字符串。
1.VBA检查字符串是否包含子串
下面是一个例子 InStr函数 在Excel中查找一个字符串是否包含一个子串。
步骤。
- 新闻 Alt + F11 在你的键盘上,或进入标签 开发人员 -> Visual Basic 打开 Visual Basic编辑器 .
- 在弹出的代码窗口中,从菜单栏中,点击 插入-> 模块 .
- 在代码窗口,复制以下代码并粘贴。
Public Sub ContainSub() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If 结束 Sub
你的代码现在可以运行了。
- 运行 宏观。
如果你的 字符串包含子串 那么你将得到一个找到的匹配,否则,它将返回没有找到匹配。
在我们的例子中,我们想找出我们的主要字符串" 电影:钢铁侠、蝙蝠侠、超人、蜘蛛侠、雷神 "包含""的字样。 Hulk "由于它没有,我们得到一个 未找到电影 结果。
2.VBA检查字符串是否包含数字
你可以通过使用以下方法来搜索字符串是否包含数字。 VBA 代码。
请看下面的例子,我们将找到哪些字符串含有电影名称的数字。
检查字符串中是否含有数字的步骤有 VBA 下文给出了答案。
步骤。
- 与之前的方法一样,打开 Visual Basic编辑器 从 开发商 选项卡和 插入 a 模块 在代码窗口中。
- 在代码窗口,复制以下代码并粘贴。
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- 这不是 "次级程序",而是 VBA 程序运行,这是在创建一个 用户定义的功能(UDF)。 我们将在我们的工作表中调用它来执行任务。 因此,在写完代码后,不要点击 运转 按钮,点击 拯救 菜单栏中的 "保存宏文件 "按钮。
- 现在回到你感兴趣的工作表,将你刚才创建的用户定义的函数写在 VBA 代码( 搜索号码 ,在代码的第一行),并在该函数的括号内,输入字符串中具有前导数字的单元格的参考编号(如 细胞B5 ).
- 新闻 进入 .
你将得到一个布尔值( 为真 或 假的 ),如果单元格中的字符串包含数字,那么你会得到 为真 ,否则 失败 .
- 将该单元格向下拖动 填充手柄 将该公式应用于其余的单元格,以检查哪个字符串包含数字,哪个不包含数字。
3.用VBA从字符串中提取数字
在上一节中,我们学习了如何检查字符串是否包含数字。 在这一节中,我们将学习如何提取这些数字,并通过下面的例子将它们放到另一个单元格中。
检查字符串是否包含数字的步骤,并通过以下方式提取它们 VBA 下文给出了答案。
步骤。
- 开放式 Visual Basic编辑器 从 开发商 选项卡和 插入 a 用户表格 这次是在代码窗口的 "插入 "选项卡中。
- 从出现 工具箱 ,拖放 命令按钮 在 用户表格 .
- 双击 按钮上,复制以下代码并粘贴。
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i..)1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If 结束 If Next iRow = iRow + 1Next myAccessary End Sub
- 运行 的代码,它将带你到感兴趣的工作表。
- 单击命令按钮 而你将从字符串中得到提取的数字。
4.VBA检查字符串是否包含某些字母
这种方法与检查字符串中的子串的方法几乎相似。
下面是 术语 函数来查找一个字符串是否包含Excel中的某个字母。
步骤。
- 与之前的方法一样,打开 Visual Basic编辑器 从 开发商 选项卡和 插入 a 模块 在代码窗口中。
- 在代码窗口,复制以下代码并粘贴。
Public Sub ContainChar() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Letter found" Else MsgBox "Letter not found" End If 结束 Sub
你的代码现在可以运行了。
- 运行 如果你的 字符串包含字母 那么你将得到一个找到的匹配,否则,它将返回没有找到匹配。
在我们的例子中,我们想找出我们的主要字符串" 电影:钢铁侠、蝙蝠侠、超人、蜘蛛侠、雷神 "包含字母" Z "由于它没有,我们得到一个 未找到信件 结果。
5.VBA检查一个字符串的范围是否包含另一个字符串
我们已经学习了如何检查一个给定的字符串是否包含另一个字符串。 但在本节中,我们将以下面的数据集为例,学习如何检查一个字符串的范围是否包含子串。
步骤。
- 开放式 Visual Basic编辑器 从 开发商 选项卡和 插入 a 模块 在代码窗口中。
- 在代码窗口,复制以下代码并粘贴。
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub
你的代码现在可以运行了。
- 运行 的代码。
如果你的范围 字符串包含子串 那么你将得到一个找到的匹配,否则,它将返回没有找到匹配。
6.用VBA从字符串中提取字符串
在本节中,我们将看到如何检查字符串是否包含某些子串,并在另一个单元格中提取这些子串。
我们将提取以""开头的名字的信息。 克里斯 "来自以下数据集。
阶梯 :
- 开放式 Visual Basic编辑器 从 开发商 选项卡和 插入 a 模块 在代码窗口中。
- 在代码窗口,复制以下代码并粘贴。
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & " :H" & count) = Range("B" & i & " :D" & i) . End If Next i End Sub
你的代码现在可以运行了。
- 运行 的代码。
只有以""开头的名字 克里斯 "将被储存在预定义的单元格中。