请参阅根据VBA中的数据而变化的查找表

请参阅根据VBA中的数据而变化的查找表,vba,excel,vlookup,Vba,Excel,Vlookup,我正在创建一个工具,它可以在现有数据的末尾自动插入一个执行vlookup的日期列。 然而,查找表每周都可能更改,因此,我需要在工具中编写代码,以便能够计算出查找表的大小,并在公式中引用它 下面是当前代码 Sub Macro1() 'Find how many rows and columns in each sheet Set POCell1 = Sheets("PO").Range("A1") Set toolCell1 = Sheets("tool").Range("A1") PORo

我正在创建一个工具,它可以在现有数据的末尾自动插入一个执行vlookup的日期列。 然而,查找表每周都可能更改,因此,我需要在工具中编写代码,以便能够计算出查找表的大小,并在公式中引用它

下面是当前代码

Sub Macro1()

'Find how many rows and columns in each sheet

Set POCell1 = Sheets("PO").Range("A1")
Set toolCell1 = Sheets("tool").Range("A1")

PORowEndCell = Sheets("PO").Range(POCell1, POCell1.End(xlToRight)).Columns.Count
POColmEndCell = Sheets("PO").Range(POCell1, POCell1.End(xlDown)).Rows.Count

toolRowEndCell = Sheets("tool").Range(toolCell1, ZSCell1.End(xlToRight)).Columns.Count
toolColmEndCell = Sheets("tool").Range(toolCell1, ZSCell1.End(xlDown)).Rows.Count

'insert Title

Sheets("PO").Cells(1, PORowEndCell + 1).Value = "New Promised Date"

'Do Vlookup

For i = 1 To (POColmEndCell - 1)

Sheets("PO").Cells(i + 1, PORowEndCell + 1).Select
ActiveCell.FormulaR1C1 = _
    "=IFERROR(IF('PO'!RC4=VLOOKUP(RC3,'tool'!R2C3:R144C14,2,FALSE),VLOOKUP(RC3,'tool'!R2C3:R144C14,11,FALSE),""""),"""")"

Next i

End Sub

其中,公式当前读数为R144C14,144由toolColmEndCell计算,14由toolRowEndCell计算。如何让vlookup引用这些计算出的变量作为范围的最终目的地?

您使用
&
连接字符串,所以您可以这样做

ActiveCell.FormulaR1C1 = _
    "=IFERROR(IF('PO'!RC4=VLOOKUP(RC3,'tool'!R2C3:R" & toolColmEndCell & "C" & toolRowEndCell & ",2,FALSE),VLOOKUP(RC3,'tool'!R2C3:R" & toolColmEndCell & "C" & toolRowEndCell & ",11,FALSE),""""),"""")"

如果只需要值,不需要在单元格中保存公式,可以考虑使用<代码>应用程序。