我有一列数字,我使用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


有任何想法吗?

最佳答案

或者,检查整数:

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


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

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

08-25 21:33