excel - 索引和匹配矩阵公式

标签 excel vba indexing match excel-tables

我真的很难将 Index + Match 转换为 VBA。我对 VBA 很陌生,事实证明这超出了我的能力范围。
我在 Sheet2 中有一个表格,列有“案例”、“概率”、“影响”和“严重性”。然后是 Sheet1 中的矩阵
我的公式(填满列)是:

=IFNA(INDEX(Sheet1!$C$2:$G$6,MATCH([@Probability],Sheet1!$B$2:$B$6,0),MATCH([@Impact],Sheet1!$C$1:$G$1,0)),"")
我正在尝试根据矩阵中的值自动填充表中的“严重性”
Table
Matrix
我尝试使用 Application.WorksheetFunction 但没有得到任何结果。
任何建议将不胜感激。

最佳答案

VBA 使用 INDEX/MATCH公式

  • 这些将填充值而不是公式。
  • 如果删除行 .Value = .Value ,公式保持不变。
  • 调整工作表和表格名称。

  • Option Explicit
    
    Sub TestEdu()
        
        Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
        Dim ws As Worksheet: Set ws = wb.Worksheets("Sheet2") ' adjust
        Dim tbl As ListObject: Set tbl = ws.ListObjects("Table1") ' adjust
        Dim lcl As ListColumn: Set lcl = tbl.ListColumns("Severity")
        
        With lcl.DataBodyRange
            .Formula = "=IFNA(INDEX(Sheet1!$C$2:$G$6,MATCH([@Probability]," _
                & "Sheet1!$B$2:$B$6,0),MATCH([@Impact],Sheet1!$C$1:$G$1,0)),"""")"
            .Value = .Value
        End With
    
    End Sub
    
    Sub TestCompact()
        With ThisWorkbook.Worksheets("Sheet2").ListObjects("Table1") _
                .ListColumns("Severity").DataBodyRange
            .Formula = "=IFNA(INDEX(Sheet1!$C$2:$G$6,MATCH([@Probability]," _
                & "Sheet1!$B$2:$B$6,0),MATCH([@Impact],Sheet1!$C$1:$G$1,0)),"""")"
            .Value = .Value
        End With
    End Sub
    

    关于excel - 索引和匹配矩阵公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71286087/

    相关文章:

    vba - 使用VBA调用手机

    sql - 从 Excel VBA 运行嵌套的 Access SQL 查询

    python - 有没有办法轻松地将 2 个索引之间的所有元素放入 Python 中的嵌套列表中?

    sql-server - 在非唯一聚集索引上查找的逻辑读取

    python - 索引具有多个条件的 Python Pandas 数据框 SQL like where 语句

    excel - 如何使excel停止将列视为日期

    string - 从单元格中的字符串中删除重复项

    excel - 删除名称中包含单词 "sheet"的任何工作表而不发出警告

    Excel公式从字符串中获取小数点后的所有内容

    excel - 保留剪切单元格的格式