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)。