【问题标题】:Quotes for String and Cell Reference字符串和单元格引用的引号
【发布时间】:2020-07-10 10:12:11
【问题描述】:

我需要将一个 excel 公式转换为 VBA 代码,但是我尝试了很多次但没有成功。 下面是我需要转换的公式。

=IF(G7959<0, "Delivered to end customer " & E7959, "To be delivered to end customer " & E7959)

以下是我尝试过但没有成功的方法,参数“IC_inventory_new_row”表示可变行索引。有人可以帮忙看看和建议吗?

IC_inventory_WS.Cells(IC_inventory_new_row, 15).Formula = "=IF(G" & IC_inventory_new_row + 1 & "<0, " & "Delivered to end customer" & "E" & IC_inventory_new_row & "," & "To be delivered to end customer " & "E" & IC_inventory_new_row & ")"

【问题讨论】:

  • 最好是使用Debug.Print 并检查公式的连接。您会开始注意到,要实现字符串值,您需要将引号加倍/加倍。顺便说一句,您不需要将逗号与字符串的其余部分分开。

标签: vba string quotes


【解决方案1】:

请尝试:

IC_inventory_WS.Cells(IC_inventory_new_row, 15).formula = "=IF(G" & IC_inventory_new_row + 1 & _
            "<0, ""Delivered to end customer ""&E" & IC_inventory_new_row & _
            ", ""To be delivered to end customer ""&E" & IC_inventory_new_row & ")"

但它可以写成不需要迭代的方式。我的意思是,一次将它放在所有范围内。如果我正确理解需要什么,请尝试这种方式,它应该可以满足您的需求:

IC_inventory_WS.Range("O2:O" & lastRow).formula = "=IF(" & Range("G2").address(0, 0) & _
            "<0, ""Delivered to end customer ""&" & Range("E2").address(0, 0) & _
            ", ""To be delivered to end customer ""&" & Range("E2").address(0, 0) & ")"

如果不是,请说明它与您真正需要的对比。

【讨论】:

  • 谢谢Fane,你的回答成功了!但是,您能否帮助将以下公式转换为 VBA? =IF(ISNUMBER(SEARCH("待交付",O7962)),"","已完成")
  • 我现在正在开车。当我回家时,我会尽力提供帮助。
  • 谢谢,在这种情况下,'IC_inventory_new_row' 代表一个可变的行索引
  • @Nicholas Kan:我不确定我理解你所说的关于 IC_inventory_new_row 的意思,它没有出现在公式中......你的意思是用 "O" &amp; C_inventory_new_row 替换“O7962”中的 7962 ?如果是,则公式应为:"=IF(ISNUMBER(SEARCH(""To be delivered"",O" &amp; C_inventory_new_row &amp; ")),"""",""Completed"")"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多