Vba 使用“转换为数字”区分数字和单词

Vba 使用“转换为数字”区分数字和单词,vba,Vba,我正在vba中运行一个vlookup,它返回一些错误。有些是由于缺少值(这些值应保持为#N/A)造成的,有些是由于值未转换为数字(这些值需要固定)。但是,当我运行下面的代码时,它会将数字和字母转换为数值,并在不应执行任何操作时返回#VALUE。我需要一种方法来区分数字和任何带有字母的值。在下面的示例中,代码应该循环,跳过TRD4并将9501转换为一个数字 L26 BW VR7F BW TRD4 #N/A TRD4 #N/A 9501 #N/A XDTM BC

我正在vba中运行一个vlookup,它返回一些错误。有些是由于缺少值(这些值应保持为#N/A)造成的,有些是由于值未转换为数字(这些值需要固定)。但是,当我运行下面的代码时,它会将数字和字母转换为数值,并在不应执行任何操作时返回#VALUE。我需要一种方法来区分数字和任何带有字母的值。在下面的示例中,代码应该循环,跳过TRD4并将9501转换为一个数字

L26     BW
VR7F    BW
TRD4    #N/A
TRD4    #N/A
9501    #N/A
XDTM    BC
UDDP    TE

For a = 2 To LCell2 Step 1
    v = Cells(a, 9).Value
    If IsError(v) Then
        Cells(a, 8).Value = Evaluate("H" & a)
    End If
Next a

如果您包含完整的代码,例如
v
声明为什么,is
单元格(a,9)
您列出的值,例如L26,以及
H&a
中的公式,这也会有所帮助

使用您提供的示例值运行快速检查,您可以在循环中使用
IsNumeric
,以测试值是否仅由数字组成或还包含文本。即使该值以文本形式存储在单元格中,这也会起作用。要将文本值转换为数字,可以使用
CInt
或任意数量的

所以,如果你只想计算它是否是一个数字而忽略文本,你可以做类似的事情

For a = 2 to LCell2 Step 1
    If IsNumeric(Cells(a,9)) then
        Cells(a,8).Value = Evaluate("H" & a)
    End If
Next a

不幸的是,这将不起作用,因为数字被存储为文本,操作将不得不区分任何只包含数字的文本值和包含数字的字母。其目的是将数字转换为数值。