Excel VBA if语句只输出0值
这是我正在使用的代码。 这是非常简单的,但仍然没有按预期工作。
Dim hey As Range Set hey = Range("A1:A5") For Each i In hey If i.Value = "15" Then i.Offset(0, 2).Value = "15" And i.Offset(0, 3).Value = "15" ElseIf i.Value = 10 Then i.Offset(0, 2).Value = "10" And i.Offset(0, 3).Value = "10" ElseIf i.Value = 5 Then i.Offset(0, 2).Value = "5" And i.Offset(0, 3).Value = "5" ElseIf i.Value > 15 And i.Value = "*5" Then i.Offset(0, 2).Value = "10" And i.Offset(0, 3).Value = "5" Else: i.Offset(0, 2).Value = 10 And i.Offset(0, 3).Value = 10 End If Next i
现在,它所做的只是抵消了2列,输出0.我无法区分为什么和我在这个心理绳索的末尾。 我敢肯定,这是一个简单的,我忽略的东西。
我已经试过了,它看起来像它正确评估我的示例中的每个值,但仍然给我0值。 另外,我正在玩弄引用,看看是否与之有关,但是我想与之合作。
谢谢你的帮助。
这是我的意思是删除And
声明:
Dim hey As range Set hey = range("A1:A5") For Each i In hey If i.Value = "15" Then i.Offset(0, 2).Value = "15" i.Offset(0, 3).Value = "15" ElseIf i.Value = 10 Then i.Offset(0, 2).Value = "10" i.Offset(0, 3).Value = "10" ElseIf i.Value = 5 Then i.Offset(0, 2).Value = "5" i.Offset(0, 3).Value = "5" ElseIf i.Value > 15 And i.Value = "*5" Then i.Offset(0, 2).Value = "10" i.Offset(0, 3).Value = "5" Else i.Offset(0, 2).Value = 10 i.Offset(0, 3).Value = 10 End If Next i
编辑:
到一个电脑程序,而且是一个比较运算符。 它不像人类那样理解它。 当与另一个人讨论时,我们可以用“和”来连接一系列的任务,并且不会有什么困惑(除非任务本身令人困惑!)。 计算机使用And
检查多个条件是否同时为真。 在你最后的Elseif
你正确地使用它来告诉计算机:“检查是否i.Value
> 15检查是否i.Value
=”* 5“如果BOTH(因为And
语句)条件为真,则运行以下码。”
希望这有助于解释差异!
编辑2:
从@litelite的build议,使用Like运算符。
ElseIf i.Value > 15 And i.Value Like "*5" Then i.Offset(0, 2).Value = "10" i.Offset(0, 3).Value = "5"
只是从@PartyHatPanda的背面去掉。 你可以使用ElseIf i.Value > 15 And Right(i.Value, 1) = 5 Then
。 这检查i.value
的最后一位数字是否等于5.我这是你想要的?