将公式插入单元格 VBA Excel 时出现运行时错误 1004

Posted

技术标签:

【中文标题】将公式插入单元格 VBA Excel 时出现运行时错误 1004【英文标题】:Runtime error 1004 when inserting formula into cell VBA Excel 【发布时间】:2016-08-09 04:34:26 【问题描述】:

尝试将公式插入 VBA 中的单元格时出现运行时错误 1004。

在我的 Excel 表格中,我在 A 列中有一个日期,在第 1 行有一个股票代码,从 B 列开始,每 3 列开始,所以 B、E、H 等。

在单元格 C2 中,我试图将 B2 中的值除以列标题“FTSE”下第 2 行中的值。将此公式直接放入单元格中即可:

=IFERROR(B2/(VLOOKUP($A2,$A$2:$GMQ$261,MATCH("FTSE",$B$1:$GMQ$1,0)+1,FALSE)),"")

我正在尝试使用 vba 来做到这一点。这是我的代码:

Sub InsertFormula()

   Range("C2").Select
   ActiveCell.Formula = _
   "=IFERROR(B2/(VLOOKUP($A2,$A$2:$GMQ$261,MATCH(""FTSE"",$B$1:$GMQ$1,0)+1,FALSE)),"")"

End Sub

【问题讨论】:

记得在最后一对双引号上“加倍”! gary 是对的...公式必须是 "=IFERROR(B2/(VLOOKUP($A2,$A$2:$GMQ$261,MATCH(""FTSE"",$B$1:$GMQ$1,0)+1,FALSE)),"""")"(您错过了错误部分加倍的“”) @Ralph 我将其作为评论发布,因为我使用的是手机,无法完全测试替代代码行。 【参考方案1】:

您可以使用TEXT function 用作TEXT(,) 来减少双双引号¹ 产生的混淆。这将返回一个长度为零的字符串,就像 "" 一样,并且没有引号可以像 """" 那样加倍。

Range("C2").Formula = _
 "=IFERROR(B2/(VLOOKUP($A2, $A$2:$GMQ$261, MATCH(""FTSE"", $B$1:$GMQ$1 ,0)+1, FALSE)), TEXT(,))"
'without the offset and subsequent adjustment with full column references
Range("C2").Formula = _
 "=IFERROR(B2/VLOOKUP($A2, $A:$GMQ, MATCH(""FTSE"", $1:$1 ,0), FALSE), TEXT(,))"

¹ 有关更多示例,请参阅 How to create strings containing double quotes in Excel formulas?

【讨论】:

哦,哇,感谢您的提示,我将不得不使用它。

以上是关于将公式插入单元格 VBA Excel 时出现运行时错误 1004的主要内容,如果未能解决你的问题,请参考以下文章

使用 Range 类在 VBA 中创建宏时出现运行时错误 1004

将公式放入单元格时出现运行时错误 1004

VBA将单元格内容分配为公式而不是其结果

基于背景颜色的Excel公式单元格

EXCEL单元格批量插入不同批注

将数据插入表时出现 ADODB VBA 自动化错误