我正在编写一个宏,它将一些公式插入到列数组中。我正在尝试自动化每周进程,因此输入文件是可变的,并通过msoFileDiaglogFilePicker
应用程序进行选择。
Dim wb_Final As Workbook, nameFinal As String
Set wb_Final = Workbooks.Open(Filename:=Final_Directory)
nameFinal = wb_Final.Name
Dim wb_Summary As Workbook, nameSummary As String
Set wb_Summary = Workbooks.Open(Filename:=Summary_Directory)
nameSummary = wb_Summary.Name
wb_Summary.Sheets("Sheet 1").Activate
With Sheets("Sheet 1")
.Range("AT4:AT5000").Formula = "=IF(OR(AX1=""Open"",AX1=""Won"",AX1=""Won - Pending""),""Yes"",""No"")"
.Range("AU4:AU5000").Formula = "=VLOOKUP(W:W,LOVs!H:I,2,FALSE)"
.Range("AV4:AV5000").Formula = "=IF(IFERROR(VLOOKUP($A:$A,'[" & nameFinal & "]DATA'!$A:$AK,34,FALSE),0)=0,"",VLOOKUP($A:$A,'[" & nameFinal & "]DATA'!$A:$AK,34,FALSE))"
.Range("AW4:AW5000").Formula = "=IF(IFERROR(VLOOKUP($AV:$AV,'[" & nameFinal & "]DATA'!$AH:$CX,48,FALSE),0)=0,"",VLOOKUP($AV:$AV,'[" & nameFinal & "]DATA'!$AH:$CX,48,FALSE))"
'....More formulas similar to above
End With
前两个公式放入单元格并计算没有问题。
第三个公式作为文本放入单元格中,在excel的前面有一个撇号。 (即'=IF(IFERROR(VLOOKUP...
)
第四个公式生成运行时错误'1004'
我尝试了所有不同的公式类型:
.Formula
.FormulaR1C1
.FormulaLocal
.FormulaR1C1Local
仍然收到同样的错误。
我认为我遇到了this article中所述的类似问题,但如果我可以使用Application.Vlookup
函数而不重新定义当前VLOOKUP函数中的所有数组和列引用,我就不会这样做(这需要很长时间)。
非常感谢任何帮助
答案 0 :(得分:0)
你不能在公式中使用撇号;而是使用引号,在你的情况下,你需要像在之前的公式中那样逃避它,例如:
VLOOKUP($A:$A,""[" & nameFinal & "]DATA""!$A:$AK,34,FALSE)
答案 1 :(得分:0)
尝试
With Worksheets("Sheet 1") '>== or Sheet1 depending on actual name
.Range("AW4:AW5000").Formula = "=IF(IFERROR(VLOOKUP($AV:$AV,[" & nameFinal & "]DATA!$AH:$CX,48,FALSE),0)=0,"""",VLOOKUP($AV:$AV,[" & nameFinal & "]DATA!$AH:$CX,48,FALSE))"
End With