|
楼主 |
发表于 2024-4-18 16:35
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
自己搜腾讯的ai解决了,代码供大家参考:
'根据您的需求,以下是使用VBA代码实现的方案:
Function SplitString(inputString As String, delimiters As String) As String()
' 定义一个字典对象,用于存储分隔符及其出现的位置
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' 定义一个变量,用于存储当前分隔符的位置
Dim currentPosition As Long
currentPosition = 1
' 遍历输入字符串,查找分隔符,并将其位置存储到字典中
For i = 1 To Len(inputString)
For j = 1 To Len(delimiters)
If Mid(inputString, i, 1) = Mid(delimiters, j, 1) Then
If Not dict.Exists(Mid(delimiters, j, 1)) Then
dict.Add Mid(delimiters, j, 1), New Collection
End If
dict(Mid(delimiters, j, 1)).Add i
End If
Next j
Next i
' 定义一个数组,用于存储拆分后的字符串
Dim result() As String
ReDim result(dict.Count)
' 根据分隔符的位置,将字符串拆分,并存储到数组中
Dim counter As Long
counter = 0
currentPosition = 1
For Each delimiter In dict
For Each Position In dict(delimiter)
result(counter) = Mid(inputString, currentPosition, Position - currentPosition)
counter = counter + 1
currentPosition = Position + 1
Next Position
Next delimiter
' 返回拆分后的字符串数组
SplitString = result
End Function
Sub TestSplitString()
Dim inputString As String
inputString = "one,two;three|four-five"
Dim delimiters As String
delimiters = ",;|-"
Dim result() As String
result = SplitString(inputString, delimiters)
For i = LBound(result) To UBound(result)
Debug.Print result(i)
Next i
End Sub
'在这段代码中,我们定义了一个名为`SplitString`的函数,该函数接受两个参数:一个是要拆分的字符串,另一个是包含多个分隔符的字符串。函数的返回值是一个字符串数组,其中包含拆分后的字符串。
'
'我们还定义了一个名为`TestSplitString`的子程序,用于测试`SplitString`函数。在这个子程序中,我们将您提供的示例字符串和分隔符字符串作为参数传递给`SplitString`函数,并将返回的结果打印到控制台。
'
'请注意,这段代码需要在Microsoft Excel或其他支持VBA的应用程序中运行。在运行之前,请确保已经正确设置了引用,以便使用字典对象。如果您在运行过程中遇到任何问题,请随时告诉我。
|
|