我正在使用此功能从单元格中提取单词。
Function FindWord(Source As String, Position As Integer)
Dim arr() As String
arr = VBA.Split(Source, " ")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
FindWord = ""
Else
FindWord = arr(Position - 1)
End If
End Function
我正在寻找一种方法来提取多个单词而不是一个单词。
答案 0 :(得分:8)
您可以使用ParamArray
参数指定任意数量的位置参数。
这样的事情:
Function FindWord(Source As String, ParamArray Position())
Dim arr() As String
Dim i As Long
Dim xCount As Long
Dim ReturnString As String
arr = VBA.Split(Source, " ")
xCount = UBound(arr)
For i = 0 To UBound(Position)
If (Position(i) - 1) <= xCount And Position(i) > 0 Then
ReturnString = ReturnString & " " & arr(Position(i) - 1)
End If
Next
FindWord = Trim$(ReturnString)
End Function
然后将其称为
=FindWord(A1,3,2,1)
根据需要指定多个位置
答案 1 :(得分:0)
一个选项是使用Regexp
来验证字符串实际上是单词。
此函数返回一个返回
的1D变量数组用
来调用该功能
Y = GetWord("I am a test 109 sample", 4, 1)
在<{1}} 1>}中的X(1)
, I 中放置 test
测试
X(2)
主
Sub TestCode()
Dim Y
Y = GetWord("I am a test 109 sample")
Y = GetWord("I am a test 109 sample", 4, 1)
End Sub