正如评论中已经指出的那样,您在区域设置方面遇到了问题。该Range.Formula
属性使用英语默认值,即您需要将德语分隔符替换;
为,
. 这样可以确保您的代码可以在任何语言版本上运行。
为了完整性:您也可以使用该Range.FormulaLocal
属性,您可以在其中提供德语公式。但是,我强烈建议以只读方式使用此属性(如果有的话)。如果您使用此属性编写公式,则保证您的代码在任何非德语系统上都会中断!
不过,对您的代码还有两条评论:
目前,您在每个单元格中放置相同的公式而不调整行号,即根据第 2 行中的输入,每行将具有相同的结果。您可以构建每个公式,用计数器替换 2。或者更简单,使用 RC1 表示法:
cell.FormulaR1C1 = "=IF(RC[-5]=RC[-4],""OLD"",""NEW"")"
实际上不需要循环并将公式单独分配给每个单元格。相反,只需用以下行替换您的 For 循环:
Sheets("Target").Range("I2").Resize(LastRow-1).Formula= _
"=IF(D2=E2,""OLD"",""NEW"")"
这样,您甚至不需要为参考而烦恼,因为 Excel 会自动应用正确的公式!