2013-05-10 123 views
0

我正在使用C#创建Excel文件。从HRESULT异常:0x800A03EC在创建工作簿时尝试添加公式r1c1

最终的结果应该是:

  1. Excel工作簿与5张

  2. 1片使用其它4张生成。

  3. 4片从数据库中生成

  4. 所有的公式应该被添加到片材1,以防万一用户想要手动添加数据到其他4张

我停留在:

后,我创建的所有4张,我想配方添加到表1.

公式逻辑 - 寻找VALU在表格2的列A中的表格1(当前)的列A(所有行一个接一个)的列e中获得该行的列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)"; 

但我得到的错误:

Exception from HRESULT: 0x800A03EC

+0

我没有保存的excel,直到这一点。 – user1224954 2013-05-10 13:29:05

+0

建议的答案是否解决了您的问题,或者您是否以其他方式解决了问题? – 2013-06-13 17:14:37

回答

1

我相信你是:

  • 使用''代替""(它不喜欢)
  • 使用$为混合A1和R1C1样式(它不喜欢)
  • 关于A1风格参考的绝对参考文献FormulaR1C1(它不喜欢)

编辑您的情况似乎不太可能,因为您已经说过该公式适用于直接输入,但是您也可能有一个区域设置问题,其中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),"""")" 
0

放在括号正确数量的您的Excel的公式:你缺少一个结尾。

+0

谢谢布德!我认为这是我痛苦的结局。但仍然没有运气。仍然得到相同的错误。 – user1224954 2013-05-10 13:28:24

相关问题