我从一个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