Excel VBA - 检查值是否为DOUBLE类型

时间:2015-03-25 20:32:48

标签: vba excel-vba excel

我有一列数字,我使用VBA将它们除以1000.但是,如果那里没有小数,我只想这样做。即像10093,20398,2039348,298,299,10这样的数字将被除以1000,但2938.39,2883.2,.2赢得了

我正在考虑创建一个循环来检查单元格值是否为DOUBLE,如果是,则跳过它 - 否则,除以。

所以,我认为这可能有用,但它没有:

For Each cel In importWS.Range(Cells(2, 2), Cells(dataLastRow - datafirstrow + 1, 2))
    If Not CDbl(cel.Value) Then
        cel.Value = cel.Value / 1000
    End If
Next cel

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

或者,检查整数:

With cel
    .Value = IIF(CLng(.Value)=.Value, .Value / 1000, .Value)
End With

这说:如果它是整数/长(无小数),则除以1000,否则使用原始cel.Value

注意:这对于非常大的整数不起作用(大于Long数据类型的任何内容都会引发溢出错误。)

答案 1 :(得分:4)

CDbl将值转换为double。

尝试

if TypeName(cel.value) = "Double" then
    cel.value = cel.value / 1000
end if

答案 2 :(得分:2)

寻找句号:

If IsNumeric(cellValue) And InStr(1, cellValue, ".") > 0 then isDouble = true