从细胞功能中提取单词

时间:2014-08-22 21:31:39

标签: excel excel-vba vba

我正在使用此功能从单元格中提取单词。

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

我正在寻找一种方法来提取多个单词而不是一个单词。

2 个答案:

答案 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}} }中的X(1) I 中放置 test

enter image description here

测试

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