我想复制 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)
一个好的做法是验证你的工作簿和工作表。如果您正在使用多个工作簿,这将变得很有用。假设
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