將=VLOOKUP(...)
公式的生成放置在函數接受範圍中作爲參數,並返回公式字符串,例如,
Function GenLookupFormula(Arg As Range, LTab As Range, ColPar As Integer, _
Optional AdrAbsolute As Boolean = True) As String
GenLookupFormula = "=VLOOKUP(" & Arg.Address(AdrAbsolute, AdrAbsolute) & "," & _
LTab.Address(AdrAbsolute, AdrAbsolute) & "," & _
ColPar & ",FALSE)"
End Function
從你的主程序調用這個函數,不管是(未)選擇/活動範圍的組合。
Sub TestGenLookup()
' Sheet1 active, cell A1 selected/active, relative addressing
Selection.Formula = GenLookupFormula([A1], [A3:B5], 1, False)
' cell B1 in active sheet, absolute addressing - omit parameter
' result still in active sheet, VLOOKUP arguments in other sheets
[B1].Formula = GenLookupFormula(Sheets(2).[A1], Sheets(3).[B3:C12], 2)
' any cell in any other (not active) sheet - absolute addressing using parameter
' mix & mingle ... all is possible
Sheets(3).Range("D1").Formula = GenLookupFormula(Sheets(2).[A1], Sheets(1).[B3:C12], 2, True)
End Sub
您可以通過發電機是否返回「A1」或「$ A $ 1」的最後一個參數選擇......你可以建立這一點,接受2布爾爲行$和col $ seperately,等等等等。
通過使用範圍,您不需要Select
/Activate
任何東西。
檢查[這個答案](http://stackoverflow.com/a/21977655/2143262)關於如何爲我們'R1C1語法'的相對和絕對引用。 –
也許你可以放在桌子上來解決查找的動態範圍。該表是通過'Insert'創建>'table' –
傳遞的公式僅僅是一個字符串參數,所以範圍地址附加到它:'.Formula =「= SUM(」&範圍(將細胞(1,3),將細胞(1,7))。地址& 「)」' –