如何将此Excel公式转换为VBA代码?

时间:2013-06-19 14:15:05

标签: vba formula

'我在Excel工作表的单元格A6中使用此公式。它工作正常。

= IF(O6 =“手”,“手动输入”,IF(O6 =“JET”,R6,IF(O6 =“COKE”,“红牛”,IF(O6 =“运费”,“物流”) “,IF(O6 =”TAX“,”税“,IF(O6 =”转移成本“,”转移成本交易“,IFERROR(IF(FIND(”INV#“,R6,1)> = 1,MID (R6,FIND( “INV#”,R6,1),10), “”), “”)))))))

现在,我的问题是:如何将其转换为VBA?我试过录制它,代码如下:

ActiveCell.FormulaR1C1 = _             “= IF(RC [14] =”“手”“,”“手动输入JE”“,IF(RC [14] =”“JET”“,RC [17],IF(RC [14] =”“ COKE“”,“”Red Bull“”,IF(RC [14] =“”FREIGHT“”,“”物流“”,IF(RC [14] =“”TAX“”,“”税“”,IF (RC [14] =“”转移成本“”,“转移成本交易”“,IFERROR(IF(FIND(”INV#“”,RC [17],1)> = 1,MID(RC [ 17],寻找(“”INV#“”,RC [17]“& _             “” “” “),” “” “)))))))”

当我运行它时,我收到运行时错误1004:应用程序定义或对象定义的错误。所以我将此更改为类似这样的内容,这与上面的公式相同,除了find选项,一切运行正常。 ![VBA For Above公式] [有关查找的任何帮助?] 结束sub。如何在上面的VBA代码中获得精美的选项。

2 个答案:

答案 0 :(得分:1)

这对我有用:

Range("L6").Formula = "=IF(O6=""Hand"",""Manual Entry"",IF(O6=""JET"",R6,IF(O6=""COKE"",""Red Bull"",IF(O6=""Freight"",""Logistics"",IF(O6=""TAX"",""Tax"",IF(O6=""TRANSFER COST"",""Transfer Cost Transactions"",IFERROR(IF(FIND(""INV#"",R6,1)>=1,MID(R6,FIND(""INV#"",R6,1),10),""""),"""")))))))"

这只是您原来的Excel公式,但"字符转义为""

答案 1 :(得分:0)

你需要逃避你的报价。

ActiveCell.Formula = "=IF(O6=""Hand"",""Manual Entry"",IF(O6=""JET"",R6,IF(O6=""COKE"",""Red Bull"",IF(O6=""Freight"",""Logistics"",IF(O6=""TAX"",""Tax"",IF(O6=""TRANSFER COST"",""Transfer Cost Transactions"",IFERROR(IF(FIND(""INV#"",R6,1)>=1,MID(R6,FIND(""INV#"",R6,1),10),""""),"""")))))))"

并使用.Formula,因为您使用的是与当前所选单元格无关的特定单元格名称。