在Excel中是否有等效的printf或String.Format?

我似乎花费大量的时间在电子表格上工作的公式,如:

="some text '" & A1 & "', more text: '" & A2 &" etc." 

使用printf或String.Formatstring会更快一些

 =String.Format ("Some text '{0}', more text: '{1}'",A1,A2) 

有没有这样的内置到Excel中,或者我可以不写一个macros调用CLR?

不,但你可以创build一个天真的,只要将下面添加到一个VBA模块

 public function printf(mask As String, ParamArray tokens()) as String dim i as Long for i = 0 To ubound(tokens) mask = replace$(mask, "{" & i & "}", tokens(i)) next printf = mask end Function 

 =printf("Some text '{0}', more text: '{1}'", A1, A2) 

你可以使用TEXT函数 –

你可以把你的格式化string存储在像我一样的单元格中的某处

我在我的D1单元格中有"BUY "#" CREDITS"值在我的A5单元格中,我的值是5000.当我想显示格式化string时,使用=TEXT(A5,$D$1)

它会将单元格的值设置为BUY 5000 CREDITS

我已经更新了Alex的代码,所以你可以使用%s作为每个插入。

代替:

 =printf("Some text '{0}', more text: '{1}'", A1, A2) 

您可以使用:

 =printf("Some text '%s', more text: '%s'", A1, A2) 

就像原来的sprintf

更新的代码:

 Public Function Printf(mask As String, ParamArray tokens()) As String Dim i As Long For i = 0 To UBound(tokens) mask = Replace$(mask, "%s", tokens(i), , 1) Next Printf = mask End Function 

不是真的 – 有CONCATENATEfunction

 =CONCATENATE("some text '",A1,"', more text: '",A2," etc.") 

但是在我看来,这并不比使用&更好

有趣的问题…我在想同样的..如何build立一个string,而不必切断数字之间的一些单一的部分长句子。 而且因为我不想创build一个VBA函数(这会更聪明)

=>这里是我的解决scheme…

替代(P253; O252; “A1A”; 1)

哪里

=> P253是我的长string,“A1A”为#1标签=> O252是#1标签的值

(即使不是我的需要),如果其他值(如果其他值)。 1)

那么,我认为即使在#C中,sprintf也应该有多个replace原始函数(….%s,%s,%d ..)

缺口