发送空“”字符串的公式周围要加上多少引号
Posted
技术标签:
【中文标题】发送空“”字符串的公式周围要加上多少引号【英文标题】:How many quotes to put around a formula that is sending an empty "" string 【发布时间】:2022-01-20 18:19:41 【问题描述】:我有一个公式要发送到工作表中的单元格。公式为:
=IF($V6>0,IF($G6>$S6,($S6-$H6)*$K6+$Y6,($G6-$H6)*$K6+$Y6),"")
要发送它,我使用以下语句,其中变量“ir”代表公式需要插入的行,如下所示:
Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")," & """ "")"""
我认为问题在于末尾的空字符串 ("") 周围的引号。
如果我用双引号将其括起来,则会出现语法错误。如果我用三引号将其括起来,我会收到“应用程序定义的或对象定义的错误”。 有没有简单的解决方案?
我可以对空字符串使用 NIL 吗?
其他更简单的公式运行良好。比如这个:
Cells(ir, "N").Formula = "= $L" & ir & "- $M" & ir
【问题讨论】:
您的条目太多。您有一个计算为真,另一个计算为假,为什么需要," & """ "")"""
部分。只需使用:Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")"
你说得对,斯科特,我忘记了当这个公式作为 Excel 公式在工作表中时,我运行了一个额外的检查,所以当另一列中没有条目时它会保持空白,然后当我将它转移到 VBA 我删除了第一个 IF 但没有删除它的结尾。哇,你的眼光真好,谢谢。
【参考方案1】:
如果您打算使用空字符串 - 试试这个,它会删除额外的外部引号:
Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")," & """ "")"
试试这个,它会删除多余的内部和外部引号:
Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")," & "" ")"
如果您打算使用空字符串 - 试试这个,它会删除额外的外部引号:
Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")," & """"")"
试试这个,它会删除多余的内部和外部引号:
Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")," & """)"
或者,也许您一开始是正确的,只是需要删除空间以使其保持空白:
Cells(ir, "O").Formula = "=IF($G" & ir & ">$S" & ir & ",($S" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ",($G" & ir & "-$H" & ir & ")*$K" & ir & "+$Y" & ir & ")," & """"")"""
【讨论】:
哇,感谢您的时间投入,太棒了,非常感谢。 @Adam B 哪个有效? 很好解释 嗨,konalion,我都试过了,但它们没有用,因为正如 Scott 指出的那样,我有太多条目,请参阅我上面的评论,但是我会把它们都放在我的后袋里因为当我最后确实需要一个空白时。我相信其中一个会成功的。再次感谢您抽出宝贵时间!【参考方案2】:konalion has already explained 如何填充双引号。此外,如果你的公式是恒定的,那么你也可以试试这个:
Private Const MyFormula As String = _
"=IF($V|>0,IF($G|>$S|,($S|-$H|)*$K|+$Y|,($G|-$H|)*$K|+$Y|),"""") "
然后使用:
Cells(ir, "O").Formula = Replace(MyFormula, "|", ir)
【讨论】:
嗨,Siddharth,你的工作很棒,你添加了额外的 if,我在原始公式中添加了,后来错误地遗漏了,正如 Scott 指出的那样。我喜欢你的解决方案的是,在常量行中,我可以清楚地看到公式是什么,然后用我的变量替换管道符号,如你所见,我对此相当陌生,并且在 65 岁时学习 VBA我想这比我在高中使用 FORTRAN 学习编程时要困难得多。 ?以上是关于发送空“”字符串的公式周围要加上多少引号的主要内容,如果未能解决你的问题,请参考以下文章