Vba 带有多个“的宏”;如果;情节

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

我使用的是Excel2007,我试着用一个宏来做任何事情。它是多个
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