我有一列数字,我使用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
有什么想法吗?
答案 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