excel用vba实现单元格每个字符从左往右判断,是否包含a、b或c,如果是将首次出现a、b或c以左的字符串显示

excel用vba实现单元格每个字符从左往右判断,是否包含a、b或c,如果是将首次出现a、b或c以左的字符串显示在另外的单元格中

写了两个例子,都没做更多循环,供参考。

Public Sub CXzf()
    Dim i As Byte, L(1 To 3), a
    a = Array("a", "b", "c")
    For i = 1 To 3
        L(i) = IIf(InStr(Range("a1").Value, a(i - 1)) <> 0, InStr(Range("a1").Value, a(i - 1)), "a")
    Next
    If Application.Min(L) - 1 <= 0 Then MsgBox "查找字符不存在或为第一个字符!": Exit Sub
    Range("B1").Value = Left(Range("A1").Value, Application.Min(L) - 1)
End Sub

Public Sub CXzf1()
    Dim i As Byte, L As Byte, a, k As Byte
    a = Array("a", "b", "c")
    For i = 1 To Len(Range("a1").Value)
        For L = 0 To 2
            If Mid(Range("a1"), i, 1) = a(L) Then
                If i = 1 Then MsgBox "查找字符为第一个字符!": Exit Sub
                Range("B1").Value = Left(Range("A1").Value, i - 1)
                k = 1
                Exit Sub
            End If
        Next
    Next
    If k <> 1 Then MsgBox "查找字符不存在!"
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-27
写代码应该方便些追问

能分享一下方法吗

追答

怎么分享要有具体的数据才能知道怎么写?

第2个回答  2017-10-27
函数就可以实现追问

怎么实现呢,求解

追答

如你数据在A1,B1输入公式:=OR(IF(ISNUMBER(FIND("a",A1)),LEFT(A1,FIND("a",A1)-1),""),IF(ISNUMBER(FIND("b",A1)),LEFT(A1,FIND("b",A1)-1),""),IF(ISNUMBER(FIND("c",A1)),LEFT(A1,FIND("c",A1)-1),""))

相似回答