Excel VBA – 只取一个单元格中的数值
我在VBA中有一个IF函数,它有一个math公式: – (Cells(i3, 10).Value > 30)
我遇到的问题是,列10中的值都是字母数字。 例如,他们都是“1 – 硬”,“2 – 中等”,“3 – 易”。
有没有办法使VBA只看数字,所以当它testing的价值超过30,它实际上工作?
谢谢
val
函数应该做你需要的。 它返回string左边的数字,直到find非数字字符(如果string不包含左边的数字,则为0)
debug.print val("1 - Hard") ' prints 1 debug.print val(" 31 - Something else") ' prints 31 debug.print val("123abc") ' prints 123 debug.print val("x 2 - You name it") ' prints 0 debug.print val("-31.5.3 - Negative") ' prints -31.5
所以只要改变你的if:
if val(Cells(i3, 10).Value) > 30 then
获取string的左边部分(短划线之前),修剪并转换为INT
。
'item = your cell value CInt(Trim(Left(item, InStr(1, item, "-") - 1)))
您可以使用VBA Val函数从string中获取前导数字字符。
要在工作表上使用此function,您需要在标准VBA模块中创build用户定义函数(UDF)。
Function LeadingNumbers(Str As String) As Double LeadingNumbers = Val(Str) End Function
所以在你的上下文中使用(LeadingNumbers(Cells(i3,10).Value)> 30)。