如何在Excel公式中创build包含双引号的string?

如何在Excel公式中构造以下string:

莫里斯“火箭”理查德

如果我使用单引号,这是微不足道的= "Maurice 'The Rocket' Richard"但双引号呢?

你是否试过用双引号转义?

 = "Maurice ""The Rocket"" Richard" 

或者,您可以使用CHARfunction:

 = "Maurice " & CHAR(34) & "Rocket" & CHAR(34) & " Richard" 

三个双引号: " " " x " " " = "x" Excel会自动换成一个双引号。 例如:

 =CONCATENATE("""x"""," hi") 

=“x”嗨

我使用这个function(如果工作簿已经有VBA)。

 Function Quote(inputText As String) As String Quote = Chr(34) & inputText & Chr(34) End Function 

这是来自Sue Mosher的书“Microsoft Outlook Programming”。 那么你的公式就是:

="Maurice "&Quote("Rocket")&" Richard"

这与Dave DuPlantis发布的类似。

如果您需要使用JSON来执行此操作,请执行以下操作:

 =CONCATENATE("'{""service"": { ""field"": "&A2&"}}'") 

这将工作的macros使用.Formula = "=THEFORMULAFUNCTION("STUFF")"所以它会像这样工作的macros使用.Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"

使用chr(34)代码:Joe =“嗨,”&Chr(34)&“Joe”&Chr(34)ActiveCell.Value = Joe

结果:你好,“乔”

返回一个空的或零长度的string(例如"" )使单元格显示为空白是工作表公式中的常见做法,但是在通过Range.Formula或Range.FormulaR1C1属性插入公式时重新创build该选项是不方便的必须将引号string中的双引号字符加倍。

工作表的本地TEXT函数可以产生相同的结果,而不使用引号。

 'formula to insert into C1 - =IF(A1<>"", B1, "") range("C1").formula = "=IF(A1<>"""", B1, """")" '<~quote chars doubled up range("C1").formula = "=IF(A1<>TEXT(,), B1, TEXT(,))" '<~with TEXT(,) instead 

在我看来,使用TEXT(,)来代替""甚至可以清理上面这个简单的公式。 当在更复杂的公式中使用这些优点变得越来越重要时,例如将空string附加到VLOOKUP以避免在查找结果为空时返回零​​,或者在与IFERROR不匹配时返回空string。

 'formula to insert into D1 - =IFERROR(VLOOKUP(A1, B:C, 2, FALSE)&"", "") range("D1").formula = "=IFERROR(VLOOKUP(A1, B:C, 2, FALSE)&"""", """")" range("D1").formula = "=IFERROR(VLOOKUP(A1, B:C, 2, FALSE)&TEXT(,), TEXT(,))" 

使用TEXT(,)replace传递空string的旧方法,可能会停止使用算盘来确定公式string中是否包含正确数量的引号字符。

VBAfunction

1).Formula =“=”“THEFORMULAFUNCTION”“&(CHAR(34)&”“STUFF”“&CHAR(34))”

2).Formula =“THEFORMULAFUNCTION”“东西”“”

第一种方法使用vba在单元格中写入一个公式,结果为计算值:

  THEFORMULAFUNCTION "STUFF" 

第二种方法使用vba在单元格中写入一个string,其结果是:

  THEFORMULAFUNCTION "STUFF" 

Excel结果/公式

1)=“THEFORMULAFUNCTION”&(CHAR(34)&“STUFF”&CHAR(34))

2)TheFORMULFUNCTION“东西”

 ="Maurice "&"""TheRocker"""&" Richard" 

还有另一种方法,虽然更多的是“如何在Excel公式中构build以下string:”Maurice“The Rocket”Richard“”而不是“如何在Excel公式中创build包含双引号的string?”,这只是简单地使用两个单引号:

SO216616的例子

在左侧是Calibri从Excel工作表中剪切,右侧是从VBA窗口中剪切。 在我看来,@YonahW提到的转义赢得了'双手',但是两个单引号不会比两个双打更多,而且在VBA中没有额外的击键,而在电子表格中可能不会显而易见。

连接"作为一个单元格:

  A | B | C | D 1 " | text | " | =CONCATENATE(A1; B1; C1); D1 displays "text"