来自HRESULT的异常:0x800A03EC在创建工作簿时尝试添加公式r1c1

时间:2013-05-10 13:05:53

标签: c# .net excel-formula excel-interop vlookup

我正在使用C#创建一个Excel文件。

最终结果应为:

  1. 包含5张的Excel工作簿

  2. 使用其他4张纸生成1张纸。

  3. 从数据库生成4张

  4. 所有公式都应添加到工作表1,以防用户想要手动将数据添加到其他4张

  5. 我被困在:

    在我创建了所有4张纸后,我正在尝试将公式添加到第1张。

    公式逻辑 - 在工作表2的A列中查找工作表1(当前)的A列(所有行逐一)的值,并获取该行的K列值。

    我正在尝试将以下VLOOKUP添加到第12行,并将公式复制到所有行。

    oRng = worksheet.Range["J12"];
    oRng.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-9],'Sheet2'!$A:$K,11,0)),'',VLOOKUP(RC[-9],'Sheet2'!$A:$K,11,0)";   
    

    但我收到错误:

      

    HRESULT的异常:0x800A03EC

2 个答案:

答案 0 :(得分:1)

我相信你是:

  • 混合A1和R1C1样式(它不喜欢)
  • 使用''代替""(它不喜欢)
  • 使用$FormulaR1C1中的A1样式引用进行绝对引用(它不喜欢)

编辑在您的情况下似乎不太可能,因为您已经说过该公式适用于直接输入,但您可能还有一个区域设置问题,其中excel需要分号列表分隔符并且您使用的是逗号,请参阅my answer here以获得解决方案。 (结束编辑)

所以试试:

oRng.Formula = @"=IF(ISERROR(VLOOKUP(A12,Sheet2!$A:$K,11,0)),"""",VLOOKUP(A12,Sheet2!$A:$K,11,0))";

oRng.FormulaR1C1 = @"=IF(ISERROR(VLOOKUP(RC[-9],Sheet2!C1:C11,11,0)),"""",VLOOKUP(RC[-9],Sheet2!C1:C11,11,0))";

(如果您不想在字符串前添加@前缀,请将字符串中的所有""更改为\"

脚注

您可以在以后的Excel版本(2007年以后)中将您的公式缩短为:

oRng.Formula     = @"=IFERROR(VLOOKUP(A12,Sheet2!$A:$K,11,0),"""")"
oRng.FormulaR1C1 = @"=IFERROR(VLOOKUP(RC[-9],Sheet2!C1:C11,11,0),"""")"

答案 1 :(得分:0)

在Excel公式中放入正确数量的括号:最后缺少一个括号。