检查单元格是否包含0到9之外的任何内容

时间:2016-05-16 19:29:00

标签: excel excel-vba vba

我有一系列格式不正确的单元格,我提取的东西不是数字,但单元格的值是文本(字符串),因此IsNumeric无法工作

例如:

4884756921

488475692?

487575e75484

我想找到那些没有改变它的文本

Dim i As Integer
i = 1
'' i is where i'm storing what is found

For j = 1 To Rows.Count

    If Len(Cells(j, 4)) = 20 Then

            Cells(i, 6).Value = Cells(j, 4)
            Cells(i, 7).Value = Cells(j, 4).Row + 1
            Cells(j, 4).Value = ""
            i = i + 1

    End If

Next j
End Sub

1 个答案:

答案 0 :(得分:0)

我认为VAL函数可用于测试字符串是否包含非数字值,但似乎VAL不会将“?”符号识别为非数字。 (工作表函数VALUE确实有效,但VALUE不可用作application.WorksheetFunction。

然而,application.WorksheetFunction.IsNonText存在,它会测试单元格是否包含值(并正确地将“?”断言为非数字)。先决条件:单元格格式需要是通用格式或数字格式(不是文本格式)。

=>我希望这会奏效:

If not application.WorksheetFunction.IsNonText(Cells(j, 4))

更简单的解决方案是直接在工作表中使用VALUE函数识别格式不正确的单元格。 (=IFERROR(VALUE(A4),"contains character"