我需要通过VBA在Excel工作表中编写一个公式,所以我通过选择范围并应用公式,但我的公式太长而且它包含很多双引号(“)所以要忽略双引号(”)我正在添加两个双引号(“)
有些时候字符串按照我的意愿写,或者一段时间不匹配双引号(“)字符串得到改变,公式应用不正确。
在python中我们在字符串之前编写r,它的工作方式如下:
print(r'hello\'s Sam.')
hello\'s Sam
但Excel VBA中有没有办法编写这样的原始字符串?
公式如下
=IF(NOT($E24=""),IF($Q24="0-10V(AI)","Direct (0-10V) = (0-100%)",IF($Q24="2-10V(AI)","Direct (2-10V) = (0-100%)",IF(OR($Q24="PT 1000",$Q24="NTC 20K"),"-50 to 150 Deg C","N/A"))),"")
我通过VBA应用它如下
Sheet4.Range("R2:R50000").Formula = "=IF(NOT($E2=""" + """),IF($Q2=""" + "0-10V(AI)""" + ",""" + "Direct (0-10V) = (0-100%)""" + ",IF($Q2=""" + "2-10V(AI)""" + ",""" + "Direct (2-10V) = (0-100%)""" + ",IF(OR($Q2=""" + "PT 1000""" + ",$Q2=""" + "NTC 20K""" + "),""" + "-50 to 150 Deg C""" + ",""" + "N/A""" + "))),""" + """)"
答案 0 :(得分:2)
VBA中没有原始字符串的概念,但您可以使用例如编写公式来编写公式。单引号而不是双引号,然后替换它们。您甚至可以创建一个简单的实用程序函数:
Function r(s As String, Optional QuoteSymbol As String = "'") As String
r = Replace(s, QuoteSymbol, """")
End Function
然后您的公式可以简单地插入:
Sheet4.Range("R2:R50000").Formula = r("=IF(NOT($E2=''),IF($Q2='0-10V(AI)','Direct (0-10V) = (0-100%)',IF($Q2='2-10V(AI)','Direct (2-10V) = (0-100%)',IF(OR($Q2='PT 1000',$Q2='NTC 20K'),'-50 to 150 Deg C','N/A'))),'')")
你需要在最终公式中使用单引号,这样你就可以将back-tick(`)之类的东西传递给可选参数QuoteSymbol
说了这么多,你似乎做了比工作更多的工作,因为在一个字符串里面,任何两个连续的双引号都会被一个双引号所取代。您不需要所有这些连接来构建最终字符串。
答案 1 :(得分:0)
只需添加一个引号(“),如下例所示: 式:
=text(now(),"mmm dd yyyy")
VBA:
Sub InsertTodaysDate()
' This macro will put today's date in cell A1 on Sheet1
Sheets("Sheet1").Select
Range("A1").Select
Selection.Formula = "=text(now(),""mmm dd yyyy"")"
Selection.Columns.AutoFit
End Sub
答案 2 :(得分:0)
由于VBA中没有原始字符串的概念,因此将此字符串放入excel Cell中可以解决此问题,然后在公式中使用它
Sheet4.Range(" R2:R50000")。公式=" =" &安培; CSTR(Sheet10.Cells(1,2)。价值)
下次只更改单元格和公式中的值得到更新