如何在 Microsoft Excel 中使用 VBA Split String into Array 函数

26 Apr 2025 | 12 分钟阅读

在 Excel VBA (Visual Basic for Applications) 中,将字符串分割成数组被认为是一项常见任务,有助于处理和操作文本数据。通常,Split 函数在 Excel VBA 中起着至关重要的作用。它允许用户根据指定的定界符轻松地将字符串分成更小的部分,并将每个片段作为数组中的独立元素有效返回。尽管如此,"Split 函数" 被认为是 VBA 中简单且多功能的。它接受两个主要参数:要分割的字符串以及确定字符串分割位置的定界符。特定的定界符可以是任何字符,例如空格、逗号、分号,甚至是字符组成的 字符串。该函数通常返回一个数组,其中每个元素代表原始字符串的一个部分,在每个定界符出现处进行分割。

  • 例如,如果我们有一个字符串 "Apple, Banana, Cherry",并且我们想将其分成单个水果,那么我们将使用逗号 (,) 作为定界符。结果将是一个包含三个元素的数组:“Apple”、“Banana”和“Cherry”。

然而,Split 函数 的灵活性允许进行自定义。即使用户未提供定界符,它也会默认按空格分割字符串。此外,Split 函数还可以接受一个可选参数来指定数组元素的最大数量,使其更具适应性。

VBA 分割字符串

“VBA 分割字符串数组函数主要使用指定的定界符将字符串划分为较小的子字符串,这些子字符串可以存储在数组中。原始字符串的元素可以轻松访问和修改。由于其多功能性以及处理各种定界符的能力,VBA 分割字符串数组函数是解析和分析文本数据的有效工具。”

让我们来看一个例子,我们有一个字符串 “This is a sample sentence,”,并且我们想有效地将其分割成一个包含单个单词的数组。

代码


How to make use of VBA Split String into Array function in Microsoft Excel

说明

  • inputString 变量主要用于存储我们要分割的文本。
  • Split 函数主要用于使用空格 " " 作为定界符将字符串分割成单词。
  • 结果的子字符串存储在 resultArray 中。
  • 然后使用循环遍历数组,并通过使用 Debug.Print 打印每个单词。

我们现在可以在 VBA 分割字符串到数组函数中有效地使用空格字符 (" ") 作为定界符。但是,此代码片段会将输入字符串分解成单独的单词,然后遍历生成的数组,仅通过使用“Debug.Print”语句显示每个单词。输出将是一个单词列表:“This”、“is”、“a”、“sample”和“sentence”。

How to make use of VBA Split String into Array function in Microsoft Excel

有用提示

关于在 Microsoft Excel 中使用相应的 VBA 分割字符串的几个关键点如下:

  1. 特定的 VBA 分割字符串到 数组函数 具有两个可选参数,即 Limit 和 Compare。尽管如此,相关的 Limit 允许我们限制结果数组中的元素数量。相比之下,Compare 参数通常指定我们需要使用的比较类型。
  2. VBA 分割字符串到数组函数默认区分大小写,因此在指定定界符或有效比较结果数组中的字符串元素时,请注意字符的大小写。
  3. 生成的数组数据类型是可变的,这意味着它可以包含各种数据类型。根据我们的用例,我们可能还需要有效地将元素转换为特定数据类型。
  4. 我们还可以使用相应的 VBA 分割字符串到数组长度来确定结果数组的长度,从而允许我们有效地处理其元素。
  5. 然而,VBA 分割字符串到数组的多个定界符使我们能够通过仅使用多个定界符将字符串分割成数组,从而在解析和有效提取原始字符串中的所有相关信息方面提供了更大的灵活性。

如何在 Microsoft Excel VBA 中轻松将分割的字符串转换为数组?

因此,要在 Microsoft Excel VBA 中将分割的字符串转换为数组,个人需要一个名为“SPLIT”的函数。此特定的 VBA 函数根据提供的定界符将提供的字符串值分割成不同的部分。

  • 例如,如果句子是“Bangalore is the capital city of Karnataka”,空格就被称为通常存在于每个单词之间的定界符。

以下是使用相应的 SPLIT 函数的语法。

Split 函数

  • 值或表达式:这是我们试图通过有效地分隔字符串的每个部分来将其转换为数组的字符串或文本值。
  • 这只不过是分隔字符串中每个单词的常见事物。在我们的句子“Bangalore is the capital city of Karnataka”中,空格字符分隔每个单词,所以我们的定界符是空格。
  • Limit 就是我们想要的结果有多少部分。例如,在句子“Bangalore is the capital city of Karnataka”中,我们有七个部分。如果我们只需要三个部分,那么我们将得到第一部分“Bangalore”,第二部分“is”,第三部分是剩余的句子,即 "the capital city of Karnataka."
  • : 这种情况 99% 的时间都不会用到,所以我们也不去碰它。

示例 #1

现在,让我们看实际示例并理解概念。

步骤 1:定义 VBA 变量:我们将从定义 VBA 中保存字符串值的变量开始。

代码


How to make use of VBA Split String into Array function in Microsoft Excel

步骤 2:分配字符串:现在,对于这个变量,我们将分配字符串为:“Bangalore is the capital city of Karnataka.”

代码


How to make use of VBA Split String into Array function in Microsoft Excel

步骤 3:定义另一个变量:在这里,我们将继续声明另一个能够在此情况下保存更多句子的变量,我们将变量定义为 “Array。”

代码


How to make use of VBA Split String into Array function in Microsoft Excel

对于这个数组变量,我们将利用 Microsoft Excel VBA 中的 SPLIT 函数来有效地将字符串分割成数组。

代码


How to make use of VBA Split String into Array function in Microsoft Excel

表达式是我们的字符串值;而变量已经保存了字符串值,所以我们只需要输入变量名。

How to make use of VBA Split String into Array function in Microsoft Excel

但是,这个字符串中的定界符通常是空格字符,所以要提供它。

代码

到目前为止,我们将保留 SPLIT 函数的其他部分。尽管 SPLIT 函数将字符串值分割成 7 部分,并且每个单词都以空格字符为代价进行分隔。由于我们声明了变量 “SingleValue” 为数组,我们也可以将所有 7 个值赋给这个变量。

我们可以按以下方式编写代码。

代码


How to make use of VBA Split String into Array function in Microsoft Excel

我们将继续运行代码,然后我们将看到我们在消息框中实际得到什么。

How to make use of VBA Split String into Array function in Microsoft Excel
How to make use of VBA Split String into Array function in Microsoft Excel

现在,我们可以看到第一个单词“Bangalore”。要更频繁地显示其他单词,我们可以按如下方式编写代码。

代码


How to make use of VBA Split String into Array function in Microsoft Excel

我们还需要运行代码,看看消息框中会得到什么。每个单词都被分别分割成了数组。

How to make use of VBA Split String into Array function in Microsoft Excel

示例 #2

我们都知道,在 VBA(Visual Basic for Applications)中,处理字符串和数组被认为是常见任务,特别是在操作数据或处理多行文本时。一个常见的场景是我们有一个多行字符串,并且我们实际上想将其分割成一个包含单个行的数组。相关的 VBA 主要提供 Split 函数来实现这一点,而且它非常简单易用。

在本次说明中,我们将通过一个示例,演示如何根据换行符轻松地将多行字符串分割成数组。

步骤 1:创建新宏并声明变量:我们将从 VBA 中的宏创建开始。我们将此宏命名为

SplitByNewline 以反映它实际执行的任务。在此宏中,我们将声明两个变量,如下所示

  • myString:这将有效地存储我们想要分割的多行字符串。
  • myArray:用于存储字符串被分割后的结果数组。

这是代码的开头


How to make use of VBA Split String into Array function in Microsoft Excel

步骤 2:将多行字符串赋给 myString:我们必须将多行字符串赋给 myString 变量。在 VBA 中,我们主要使用 vbCrLf 来表示换行符。这是一个 VBA 中的预定义常量,通常代表“回车符”“换行符”的组合,这在大多数系统中会创建一个新行。

尽管如此,我们通常需要创建多行字符串,我们还将通过在每行文本之间使用 & vbCrLf & 来连接每一行。在代码中看起来是这样的


How to make use of VBA Split String into Array function in Microsoft Excel

在大多数情况下,在这个例子中,myString 包含三行

第 1 行

第 2 行

第 3 行

& vbCrLf & 其他部分通常可以有效地确保每行都由换行符正确分隔。

步骤 3:使用 Split 函数:既然我们有了多行字符串,我们就可以轻松地将其分割成数组。在大多数情况下,在这种情况下,定界符是 vbCrLf。我们在 myString 上调用 Split 函数,然后需要将结果赋给 myArray。代码如下


How to make use of VBA Split String into Array function in Microsoft Excel

此时,myArray 可能包含来自原始字符串的各个行的数组。数组的每个元素对应 myString 中的一行文本。

步骤 4:循环遍历数组并显示元素:一旦我们将字符串分割成数组,我们就需要访问和显示每个元素。为了实现这一点,我们也可以使用 For 循环。LBound 函数主要返回数组中第一个元素的索引,而 UBound 函数返回最后一个元素的索引。

显示数组元素的循环如下


How to make use of VBA Split String into Array function in Microsoft Excel

此外,此循环将遍历 myArray 的每个元素,并将其打印到立即窗口Debug. Print 语句通常用于将每个元素的值输出到立即窗口,这是在 VBA 中进行调试和检查代码输出的绝佳工具。

步骤 5:运行代码:当我们在 VBA 编辑器中运行此代码时,它会根据换行符将 myString 分割成数组。然后,数组的每个元素都会有效地打印在立即窗口中。

输出将如下所示

第 1 行

第 2 行

第 3 行

How to make use of VBA Split String into Array function in Microsoft Excel

然而,正如预期的那样,立即窗口将不会在单独的行上显示。

完整代码

这是此示例的完整代码

此外,在这个特定的示例中,我们使用了 VBA 的 Split 函数来处理多行字符串,并根据换行符将其分割成数组。通过遍历数组,我们在立即窗口中显示每一行。这是在 Microsoft Excel VBA 中处理多行字符串的一种简单而有效的方法,而 Split 函数可以成为文本处理和操作的强大工具。

需要记住的重要事项。

个人在 Microsoft Excel 中使用相应的 VBA 分割字符串到数组函数时需要记住的几点如下:

  1. 个人在使用 VBA 代码中的原始字符串和结果数组之前,需要声明变量。这将确保个人拥有适当的数据结构。
  2. 个人必须清楚地定义想要从中分割字符串的定界符。定界符可以是单个字符、一个字符串,甚至是字符的组合,以满足特定的分割需求。
  3. 尽管相应的索引使得在拥有数组后访问和修改数组的特定组件变得容易。尽管如此,它们使我们能够通过不同的数据操作有效地处理原始字符串的分割部分。

常见问题解答/FAQ。

VBA (Visual Basic for Applications) 中的 Split 函数通常用于将字符串分解成子字符串数组,这些子字符串基于指定的定界符。然而,在使用此函数时,通常会出现一些问题和疑虑,我们将在下面进行解答。

问题 1:我们可以在 Microsoft Excel VBA 中为 Split 函数使用不同的 VBA 定界符吗?

答案:是的,VBA 中的相应 Split 函数被认为是多功能工具,它足以允许使用任何字符或字符集作为定界符。定界符是分隔原始字符串为更小部分的字符或字符串。虽然我们经常看到逗号或空格用作定界符,但我们可以使用任何适合我们数据的字符或字符组合。

问题 2:如何使用 VBA 中的 Split 处理前导和尾随空格?

答案:当我们实际分割字符串时,结果的数组元素可能仍然包含不想要的开头或结尾空格。不幸的是,Split 函数不会自动删除所有这些空格。但是,我们可以通过使用 Trim 函数轻松处理这个问题,该函数分别删除数组中每个元素的前导或尾随空格。

这里有一个例子

此代码从数组中的每个水果名称中修剪空格,确保没有前导或尾随空格。

问题 3:在 VBA 中进行字符串操作是否有 Split 函数的替代方法?

答案:虽然 Split 函数非常有用,但还有其他几种方法可用于 VBA 中的字符串操作,这主要取决于我们的需求。一些最常见的替代方法包括:

  • InStr 和 Mid 函数:如果我们希望在字符串中查找特定字符或子字符串,那么我们可以使用 InStr 函数来定位子字符串的位置,然后我们还可以使用 Mid 函数来提取字符串的各个部分。这种方法使我们能够更精确地控制如何分割字符串。
  • 正则表达式 (RegExp):我们还可以使用 VBA 中的 RegExp 对象来进行更复杂或基于模式的字符串操作。这使我们能够匹配模式(例如日期、数字等),并根据这些模式分割或操作字符串。