我從一個Excel工作表中提取值到另一個。我用下面的公式:Excel自定義公式與IF語句和INDEX,MATCH返回一個#VALUE錯誤
= IF(ISBLANK(IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1));Error2;IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1))
因爲我需要做的計算與提取的數據,我想創建一個自定義功能,將不再需要鍵入其保持不變每次參數簡化了提取過程。所以我建立了以下功能:
Function DataCap(Dates As Variant, Row As Variant) As Variant
Dim Range1 As Range 'Define the whole lookup table
Set Range1 = Range("Data!A1:P151")
Dim Range2 As Range 'Define the date lookup table
Set Range2 = Range("Data!A3:P3")
Dim Error1 As Range 'Define the error 1; if no value
Set Error1 = Range("X16")
Dim Error2 As Range 'Define the error 2; if blank
Set Error2 = Range("Y16")
DataCap.Formula "= IF(ISBLANK(IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1));Error2;IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1))"
End Function
當我運行它時,我得到#VALUE錯誤。如果我直接在單元格中粘貼方程(使用相同的參數),它會按預期工作。所以,我認爲問題在於VBA無法進行計算。任何建議如何解決這個問題?
感謝您的幫助提前
您是否將'Range','Range2','Error1'和'Error2'定義爲命名範圍? –
您不能在公式中使用VBA變量名稱,並且您需要在公式字符串中使用逗號而不是分號。 – Rory
@RobinMackenzie,範圍,範圍2等僅在代碼中定義,而不是在Excel表格中定義。 – Mark