在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 ..)
缺口