VBA拆分功能(示例)|如何在Excel VBA中分割字符串?

什么是Excel中的VBA拆分功能?

VBA中的分割功能 这是一个非常有用的字符串函数,用于根据提供给该函数的定界符和比较方法将字符串拆分为多个子字符串,还有其他字符串函数也可以将字符串转换为子字符串,但是split函数可以将字符串拆分为多个一子串。

在正常的工作表中,LEFT函数,MID函数和excel中的RIGHT用作excel中的文本函数来提取句子的一部分。例如,提取名字,中间名和姓氏是我们看到的常见情况。但是在VBA中,我们拥有称为SPLIT的更通用的功能,它将为您完成类似的工作。 SPLIT是Excel VBA中的内置函数,可以基于定界符分割提供的句子。例如,如果您要将电子邮件地址拆分为不同的部分,则电子邮件地址中的通用元素在所有电子邮件ID中均为“ @”,因此“ @”在此处成为分隔符。

VBA分割字串功能

像所有其他函数一样,split也具有自己的语法。以下是excel VBA拆分字符串函数的参数。

  • 值或表达式: 这不过是我们尝试拆分的实际值。例如,如果要拆分名字和姓氏,则全名是此处的值。
  • [定界符]: 拆分值或表达式的共同要素是什么?在电子邮件ID中,“ @”是常见元素,在地址逗号(,)中是常见元素。如果忽略此选项,它将空格字符视为默认值。
  • [限制]: 您需要从提供的“值”或“表达式”中获得多少个子字符串。例如,如果值是“我的名字是Excel”,则如果提供3作为限制,它将以三行显示结果,例如“我的名字”,“名字”,“是Excel”。
  • [比较]: 由于我们不使用compare参数,因此请跳过此可选参数。

在本文的下一部分中,我们将看到如何在excel VBA中实际使用SPLIT函数。

VBA分割字串功能的范例

以下是Excel VBA中分割功能的实际示例。

您可以在此处下载此VBA拆分功能Excel模板– VBA拆分功能Excel模板

例子#1 –分割句子

Split返回数组中的结果,该结果将从0开始。所有数组均从0开始而不是从1开始。

假设您在单元格A1中有单词“我的名字是Excel VBA”。

现在,您想将此句子拆分为“我的”,“名称”,“是”,“ Excel”,“ VBA”之类的片段。使用Excel VBA SPLIT String函数,我们可以返回此结果。

步骤1: 以名称开头的宏。

代码:

 Sub Split_Example1()结束Sub  第2步: 声明三个变量。

代码:

 Sub Split_Example1()将MyText用作字符串Dim i作为整数Dim MyResult()用作字符串End Sub 

第三步: 现在,对于已定义的变量,“我的文本”将分配单词 “我的名字是Excel VBA”.

代码:

 Sub Split_Example1()以字符串Dim MyText作为昏暗i以整数Dim iResult()作为字符串MyText =“我的名字是Excel VBA”结束 

第4步: 现在为My Result变量应用VBA拆分字符串功能。

代码:

 Sub Split_Example1()Dim MyText As String Dim i As Integer Dim MyResult()As String MyText =“我的名字是Excel VBA” MyResult = Split(End Sub 

步骤5: 表达是我们的文字价值。由于我们已经将文本值分配给变量“我的文本”,因此请在此处输入此参数。

代码:

 Sub Split_Example1()以字符串Dim MyText作为昏暗i以整数Dim iResult()作为字符串MyText =“我的名字是Excel VBA” MyResult = Split(MyText)End Sub 

注意:到目前为止,请忽略所有其他参数。

步骤6: 所以现在“我的结果”保留了此拆分结果。正如我在文章前面所讲的,split函数将结果存储为数组,因此这里

  • 我的结果(0)=“我的”
  • 我的结果(1)=“名称”
  • 我的结果(2)=“是”
  • 我的结果(3)=“ Excel”
  • 我的结果(4)=“ VBA”

即使此代码对启动SPLIT函数没有任何影响,我们也可以使用此代码。

Example#2 –具有UBOUND函数的VBA SPLIT字符串

为了存储SPLIT函数的结果,我们可以将vba UBOUND函数与SPLIT函数一起使用。

UBOUND将返回数组的最大长度。在上面的示例中,数组的最大长度为5。

用相同的词“我的名字是Excel VBA”。让我们分开这个词,从单元格A1开始存储。

步骤1: 让我们从上一个示例中停下来的地方继续。

第2步: 现在在VBA中将FOR NEXT LOOP从0应用于数组的最大长度,即UBOUND。

我们从零开始的原因是因为SPLIT将存储从零开始的结果,而不是从1开始的结果。

第三步: 现在应用VBA CELLS属性并存储结果。

代码:

单元格(i + 1,1)。值= MyResult(i)

第4步: 运行此代码,我们将获得拆分值。

完整的代码:

 Sub Split_Example1()以字符串Dim MyText作为昏暗i以整数Dim iResult()作为字符串MyText =“我的名字是Excel VBA” MyResult = Split(MyText)对于i = 0至UBound(MyResult)单元格(i + 1,1) .Value = MyResult(i)下一个i结束子 

返回字数

我们还可以显示提供的值中的单词总数。使用以下代码显示单词总数。 代码:

 Sub Split_Example2()Dim MyText作为字符串Dim i作为整数Dim MyResult()作为字符串MyText =“我的名字是Excel VBA” MyResult = Split(MyText)i = UBound(MyResult())+ 1 MsgBox“总字数为” &i结束子 

复制并粘贴上面的VBA代码并运行它,消息框将返回结果。

要记住的事情

  • 如果未提供定界符,则SPLIT会自动将定界符视为空格。
  • 如果要拆分除空格以外的其他内容,则需要在双引号中指定定界符。
  • SPLIT将结果存储为数组结果。
  • UBOUND函数返回数组的最大长度。