【问题标题】:VBA - Match Lookup With Multiple ParametersVBA - 具有多个参数的匹配查找
【发布时间】:2018-10-18 01:20:42
【问题描述】:

我有一些宏可以执行各种任务,而流程的最后一步需要用户手动输入公式似乎毫无意义,所以这里是场景:

我有 2 个电子表格:

  1. 合并表 - 包含员工编号和员工详细信息(见下图)

  2. 摘要表 - 仅包含 3 列; AppName、EmpNum、状态(见下图)

    注意:这些表中目前没有任何数据,在汇总表上,我根据数据创建了一个表,以便公式可以工作

在“主管电子邮件”列末尾的合并表上,还有几列包含应用程序名称(见下图)

最初的想法是使用以下公式查找员工编号和应用名称,然后将状态复制到相关单元格 - 但此公式似乎不起作用,并且需要用户手动将公式插入每个应用程序名称下的每个单元格。

公式:

=IFERROR(INDEX(Table2[Status],SUMPRODUCT((Table2[App Name]=L$1)*(Table2[Employee Number]=$A2)*(ROW(Table2[Status])))-1,1),"")

现在,我想做的是相对相同的事情,但有两个不同之处:

  1. 我不希望在公式所在的单元格中显示状态 - 如果匹配,则应显示“匹配”

    如果没有匹配,则单元格应为空白

  2. 我需要将这个公式放在一个宏中,该宏可以找到“lastRow”并填充从 App1 到最后一个 AppName 再到“lastRow”的列

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    用户 Subodh Tiwari (Neeraj) 在这里回答了这个问题:

    https://www.experts-exchange.com/questions/29098511/VBA-VLOOKUP-With-Multiple-Parameters.html#acceptAnswerByMember

    此链接中的帖子附有示例工作簿。

    完整代码如下:

    Sub PlaceFormula()
    Dim ws As Worksheet
    Dim lr As Long
    Dim lc As Long
    
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    
    Set ws = Sheets("Main")
    lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
    lc = ws.Cells(1, Columns.Count).End(xlToLeft).Column
    
    ws.Range("B2", ws.Cells(lr, lc)).Formula = "=IF(ISNUMBER(MATCH($A2&B$1,INDEX(tStatus[[Employee Number]:[Employee Number]]&tStatus[[Wk Number]:[Wk Number]],),0)),""Match"","""")"
    ws.Range("B2", ws.Cells(lr, lc)).Value = ws.Range("B2", ws.Cells(lr, lc)).Value
    
    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多