Vba 带有多个“的宏”;如果;情节
我使用的是Excel2007,我试着用一个宏来做任何事情。它是多个Vba 带有多个“的宏”;如果;情节,vba,excel,Vba,Excel,我使用的是Excel2007,我试着用一个宏来做任何事情。它是多个if的组合 如果是E147=“ESM7”和C147=“Bot”,则为“O150”中显示的值,如果不是,则为“Q150”中显示的值 但是如果E147=“ESU7”则为“O151”中显示的值,如果不是,则为“Q151”中显示的值 因此,有4种if场景,从主单元格为“ESM7”或“ESU7”开始,然后根据下一个单元格值是“Bot”还是“SLD”来确定。对于这些场景,请尝试使用选择案例,也可以在将来提供更大的灵活性: Option Exp
if
的组合
如果是E147=“ESM7”和C147=“Bot”,则为“O150”中显示的值,如果不是,则为“Q150”中显示的值
但是如果E147=“ESU7”则为“O151”中显示的值,如果不是,则为“Q151”中显示的值
因此,有4种if场景,从主单元格为“ESM7”或“ESU7”开始,然后根据下一个单元格值是“Bot”还是“SLD”来确定。对于这些场景,请尝试使用选择案例
,也可以在将来提供更大的灵活性:
Option Explicit
Sub Test1()
Select Case Range("E147").Value
Case "ESM7"
If Range("C147").Value = "Bot" Then
Range("O150").Value = Val
Else
Range("Q150").Value = Val
End If
Case "ESU7"
Range("O151").Value = Val
Case Else
Range("Q151").Value = Val
End Select
End Sub
您可能需要尝试使用“选择”功能
或者,看看LOOKUP函数
你可能会发现,如果你开始被太多的IFs弄得不知所措,那么使用它比使用多个IF语句更容易。问题是什么?我没有看到任何疑问点…到目前为止你试过什么?您的代码的哪一部分不起作用?如果你真的把代码包括在问题中,这会有帮助,这样我们就可以帮助你解决它。(为什么它需要在宏中,为什么不写一个Excel公式?)为什么需要宏?你不能在Q150和Q151中加入一些IF
公式吗?对不起,我不是编码员,不知道如何编写公式,需要你的帮助。我们可以提供帮助,但我们需要更多细节。我们不能在不了解所有情况下确定公式。如果C147!=以“Bot”和E147=“ESM7”为例?我们需要每个条件,也许你会得到一个清晰的答案…我试图复制并粘贴你的答案,但在单元格I148中得到了一个“False”。这是我复制的。Sub-ESM7ESU7()范围(“I148”)。选择ActiveCell.FormulaR1C1=“=IF(R[-1]C[-5]=”esm7“,IF(R[-1]C[-6]=”bot”,“R[2]C[6],)else R[3]C[6])”范围(“I148”)。选择ActiveCell.FormulaR1C1=“=IF(R[-1]C[-5]=”esm7“、IF(R[-1]C[-6]=”bot“、R[2]C[6]、)(else,R[3]C[6])”范围(“A147”)。选择ActiveSheet.Paste范围(“D135”)。选择ActiveWorkbook.Save范围(“F134”)。选择结束子单元格I145,没有返回“False”,但返回了“NAME?”。我不知道如何放置“Select Case”“输入Visual Basic编辑器。我所知道的只是如何将“Sub”输入编辑器。@vancouvertrader没有区别,只需将此代码段复制到您的代码段中,然后重试。当我将您的答案复制并粘贴到编辑器中,并尝试将其分配给宏按钮时,我无法选择它,因为它不会显示在编辑器中供我选择。@vancouvertrader将它复制到应用按钮的Sub
中
Option Explicit
Sub Test1()
Select Case Range("E147").Value
Case "ESM7"
If Range("C147").Value = "Bot" Then
Range("O150").Value = Val
Else
Range("Q150").Value = Val
End If
Case "ESU7"
Range("O151").Value = Val
Case Else
Range("Q151").Value = Val
End Select
End Sub