VBA 中多个单元格的索引匹配

问题描述 投票:0回答:1

我想复制 14 列的数据。

当我向下拖动公式时,Excel 中的以下公式会起作用,并且它会忽略空白单元格。

=IF(INDEX(SSI!B:O, MATCH(CU11, SSI!A:A, 0), {1,2,3,4,5,6,7,8,9,10,11,12,13,14})="", "", INDEX(SSI!B:O, MATCH(CU11, SSI!A:A, 0), {1,2,3,4,5,6,7,8,9,10,11,12,13,14}))

当我尝试在 VBA 中复制此内容时,仅填充第一列。

Range("AU11").Select
ActiveCell.FormulaR1C1 = "=IF(INDEX(SSI!C[-45]:C[-32], MATCH(RC[52], SSI!C[-46], 0), {1,2,3,4,5,6,7,8,9,10,11,12,13,14})="""", """", INDEX(SSI!C[-45]:C[-32], MATCH(RC[52], SSI!C[-46], 0), {1,2,3,4,5,6,7,8,9,10,11,12,13,14}))"
Range("AU11").Select
Selection.AutoFill Destination:=Range("AU11:AU" & lr)
excel vba
1个回答
1
投票

一个好的做法是验证你的工作簿和工作表。如果您正在使用多个工作簿,这将变得很有用。假设

lr
有一个有效的数字,以下应该可以工作。

Option Explicit

    Sub test()
        
        Dim oWB As Workbook: Set oWB = ThisWorkbook
        Dim oWS As Worksheet: Set oWS = oWB.Sheets("Data")  'Change the name of the worksheet to your name
        
        oWS.Range("AU11:AU" & lr).FormulaR1C1 = "=IF(INDEX(SSI!C[-45]:C[-32], MATCH(RC[52], SSI!C[-46], 0), {1,2,3,4,5,6,7,8,9,10,11,12,13,14})="""", """", INDEX(SSI!C[-45]:C[-32], MATCH(RC[52], SSI!C[-46], 0), {1,2,3,4,5,6,7,8,9,10,11,12,13,14}))"
    
    End Sub
© www.soinside.com 2019 - 2024. All rights reserved.