gpt4 book ai didi

vba - 获取括号之间的值,一个字符串中的多个匹配项

转载 作者:行者123 更新时间:2023-12-04 22:01:12 25 4
gpt4 key购买 nike

我的电子表格有一列,其值类似于以下字符串:

some text (text1) some test (text2) (text1)

如何获取括号之间的所有值?我正在寻找的结果是:
text1, text2

即使 text1, text2... testn多次出现在单元格中,我只需要它在结果中一次。

我找到了一个函数 GetParen这里: Get the value between the brackets

这很有帮助,但它在括号中给出了第一个可用值,而忽略了其余部分。

最佳答案

将一个用户定义函数用于单个条目,另一个用于所有条目的集体结果似乎很笨拙。

将以下内容粘贴到标准模块代码表中。

Function getBracketedText(str As String, _
Optional pos As Integer = 0, _
Optional delim As String = ", ", _
Optional dupes As Boolean = False)
Dim tmp As String, txt As String, a As Long, b As Long, p As Long, arr() As Variant

tmp = str
ReDim arr(1 To 1)

For b = 1 To (Len(tmp) - Len(Replace(tmp, Chr(40), vbNullString)))
p = InStr(p + 1, tmp, Chr(40))
txt = Trim(Mid(tmp, p + 1, InStr(p + 1, tmp, Chr(41)) - (p + 1)))
If UBound(Filter(arr, txt, True)) < 0 Or dupes Then '<~~ check for duplicates within the array
a = a + 1
ReDim Preserve arr(1 To a)
arr(UBound(arr)) = txt
End If
Next b

If CBool(pos) Then
getBracketedText = arr(pos)
Else
getBracketedText = Join(arr, delim)
End If
End Function

像任何其他 native 工作表函数一样使用。有可选参数来检索单个元素或集合以及更改默认的 分隔符。

bracket_text_no_duplicates

关于vba - 获取括号之间的值,一个字符串中的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com