从范围 VBA 中的最后一列进行 VLookup

VLookup from Last Column in Range VBA

我正在尝试编写 VBA,它将从不同工作表上的数组中 VLookup 信息,并 return 它。问题是,我的代码需要查找范围内最后一列的信息,但是由于范围是一个枢轴 table 并且列是积压的月份,因此列数可能不同。 VBA 成功地将代码放入目标单元格,但它得到一个#NAME?错误,所以我相信对象声明有些混乱。有人可以帮忙吗?

Sub VLookupLastColumn()

Dim Row7 As Long
Dim Column1 As Long
Dim myTableArray As Range


Sheets("Pivot Values").Select
Row7 = Range("A" & Rows.Count).End(xlUp).Row
Column1 = Range("A" & Columns.Count).End(xlToLeft).Column
With ActiveSheet
    Set myTableArray = .Range(.Cells(1, 1), .Cells(Row7, Column1))
End With

Sheets("Output").Select
Range("BD5").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-55],myTableArray,Column1,0)"

尝试这样的事情:

Sub VLookupLastColumn()

    Dim Row7 As Long, Column1 As Long
    Dim myTableArray As Range, ws As Worksheet
    
    Set ws = Sheets("Pivot Values") 'use a worksheet variable
    
    Row7 = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Column1 = ws.Cells(1, Columns.Count).End(xlToLeft).Column
    Set myTableArray = ws.Range(ws.Cells(1, 1), ws.Cells(Row7, Column1))
    
    'add countif starting at row 7
    ws.Range(ws.Cells(7, Column1 + 1), ws.Cells(Row7, Column1 + 1)).Formula = _
         "=COUNTIF(B7:" & ws.Cells(7, Column1).Address(False, False) & ","">0"")"
    
    With Sheets("Output").Range("BD5")
        .Formula = "=VLOOKUP(" & .Offset(0, -55).Address(False, False) & "," & _
                             ExtAddress(myTableArray) & "," & Column1 & ",FALSE)"
    End With

End Sub

'return a range address, including the worksheet name
Function ExtAddress(rng As Range)
    ExtAddress = "'" & rng.Parent.Name & "'!" & rng.Address()
End Function