string - Excel中删除除第一个单词之外的所有以特定字母开头的单词的第一个字符

标签 string vba excel user-defined-functions

我正在尝试构建一个 UDF,它将查看单元格并删除以字母“El”开头的所有单词的第一个字符除了第一个单词。

单元格 A1 中的值将为:

El agua、El asma、El arca、Elhambre、El aguila、Elements

在将调用 UDF 函数的单元格 B1 中,我希望结果为:

El agua、las asma、l arca、lhambre、l aguila、lements

我的代码如下:

    Function exceptFirst(MyString As String)
    Dim X As Long
    Dim Tempstr As String
    Tempstr = ""
    For X = 1 To Len(MyString)
        If Mid(MyString, X, 2) = "El" Then

            Tempstr = Tempstr

        Else

            Tempstr = Tempstr & Mid(MyString, X, 1)


        End If
    Next
    exceptFirst = Tempstr
    End Function

代码的作用是删除以“EL”开头的单词中的所有“E”,但并不排除 strong>第一个单词中的第一次出现。 非常感谢您的帮助,并提前致谢。

最佳答案

另一个 UDF,使用 SplitJoin

Option Explicit
Option Compare Binary 'to ensure case sensitive
Function exceptFirst(S As String) As String
    Dim V As Variant
    Dim I As Long
    Dim bFirst As Boolean

bFirst = False
V = Split(S, ", ")

For I = LBound(V) To UBound(V)
    Select Case bFirst
        Case False
            If V(I) Like "El*" Then bFirst = True
        Case True
            If V(I) Like "El*" Then V(I) = Mid(V(I), 2)
    End Select
Next I

exceptFirst = Join(V, ", ")

End Function

编辑 我假设您希望 El 在替换和检测中区分大小写第一个例子。如果情况并非如此,只需将 Option Compare 语句从 Binary 更改为 Text

关于string - Excel中删除除第一个单词之外的所有以特定字母开头的单词的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48461119/

相关文章:

VBA Excel 谷歌查找

excel - 在 workbook_open 上添加工作表

excel - 如何从Excel中的给定列中随机选择值

c++ - 不同的字符串变量指向相同的地址

vba - 动态控制 VBA 功能区

c - 检测到堆损坏 - 使用字符串实现合并排序

vba - 奇怪的大于或小于结果

excel - 如何解决 VBA 错误 "Unable to get the selected property of the range class "

python - 与列表相比,字符串的 "in"运算符的时间复杂度是否存在差异?

c++ - 操作字符串 C++