Bru*_*yne 2 excel vba excel-vba
我有一列数字,我使用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
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
CDbl 将值转换为双精度值。
尝试
if TypeName(cel.value) = "Double" then
cel.value = cel.value / 1000
end if
Run Code Online (Sandbox Code Playgroud)
或者,检查整数:
With cel
.Value = IIF(CLng(.Value)=.Value, .Value / 1000, .Value)
End With
Run Code Online (Sandbox Code Playgroud)
这说:如果它是一个整数/长(无小数),则除以1000,否则使用原始cel.Value
.
注意:这对于非常大的整数不起作用(大于Long
数据类型的任何东西都会引发溢出错误).