从细胞功能中提取单词

Joa*_*lai 1 excel vba excel-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
Run Code Online (Sandbox Code Playgroud)

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

chr*_*sen 8

您可以使用ParamArray参数指定任意数量的Position参数.

像这样的东西:

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
Run Code Online (Sandbox Code Playgroud)

然后称之为

=FindWord(A1,3,2,1)
Run Code Online (Sandbox Code Playgroud)

根据需要指定多个位置

  • 为了更好的可读性,您还可以通过Position而不是for循环/ xCount为每个循环执行a. (2认同)