如何检查单元格是否仅包含特定列表中的字符?

时间:2015-03-17 22:32:10

标签: excel excel-vba excel-formula character contains vba

我正在尝试检查数据列以查看其行是否仅包含特定字符。相关字符为0 - 9/。如果仅存在那些,则应返回OK,否则返回错误(或1和0,任何可区分的都可以)。它基本上应该是这样的(粗体列):

https://i.imgur.com/IrJuZ47.png

我在MATCH和VLOOKUP方面取得了有限的成功,但没有任何一个使用范围。一个公式将是首选,但VBA也很酷。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

使用公式(在B1中,如果12在A1中,则向下复制):

=IF(ISNUMBER(VALUE(SUBSTITUTE(A1,"/",""))),"OK","ERROR")  

添加排除.会使其更长一些:

=IF(AND(ISERROR(FIND(".",A1)),ISNUMBER(VALUE(SUBSTITUTE(A1,"/","")))),"OK","ERROR")

答案 1 :(得分:1)

对于公式方法,以下数组输入公式将返回TRUE或FALSE,具体取决于是否存在不允许的字符。要确认公式,按住 ctrl-shift ,同时按输入,Excel将在公式周围放置大括号 {...}

=AND(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=47,CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=57)

您可以在IF函数中将其用作logical_test,以返回您想要的任何内容。

答案 2 :(得分:0)

试试这个 UDF()

Public Function CellTest(sIn As Variant) As String
    Dim L As Long, i As Long, CH As String
    L = Len(sIn)

    For i = 1 To L
        CH = Mid(sIn, i, 1)
        If IsNumeric(CH) Or CH = "/" Then
        Else
            CellTest = "No Good"
            Exit Function
        End If
    Next i

    CellTest = "Good"
End Function

enter image description here