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

How do I check if a cell only contains characters from a specific list?

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

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

试试这个 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

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

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

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

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

对于公式方法,以下 数组输入 公式将 return 为真或假,具体取决于是否存在不允许的字符。要确认公式,请按住 ctrl-shift 同时按 enter 并且 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 以 return 任何您想要的。