'我在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代码中获得精美的选项。
答案 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
,因为您使用的是与当前所选单元格无关的特定单元格名称。