我注意到这"EXEC MySproc," & "arg, " & "arg2"与=CONCATENATE("EXEC MySproc,", "arg,", "arg2") 包括使用评估、函数等的能力基本相同。使用=CONCATENATE()vs的用例是什么&?
tey*_*lyn 56
它适用于喜欢打字的人。可能是相同的受众做类似的事情=Sum((A1*A2)-A3)而不是=(A1*A2)-A3. (是的,这些人存在,我不知道他们为什么这样做)
它还提供了使用 VBA 创建您的第一个用户定义函数以创建比 Concatenate() 更有用的东西的绝佳机会。
Excel 2016(带有 Office 365 订阅)有一个名为TextJoin()的新函数,它接受一个分隔符和一个范围作为参数,并且比将&符号和分隔符作为文本字符串输入要快得多。现在,这很有用。
Nel*_*son 21
这可能是因为他们正在使用“插入功能”按钮。
当我用左手吃饭并且只是在做一些低级公式时,或者当我使用触摸设备并且无法在触摸屏上的符号、字母和数字之间切换时,我有时会这样做.
Aga*_*nju 17
它只有历史和兼容性原因。以前版本的 Excel 不支持一种格式,其他电子表格工具(如 Google Docs、Apple Numbers 或 Open Office)也不支持另一种格式。
选择您喜欢的任何一个。
请注意,根据您的保存格式,Excel 需要CONCATENATE()比&.
Thu*_*ame 15
在我看来,有选择地使用连接和与符号可以使公式更清晰。
的详细地址这串联,使用混合的CONCATENATE和&看起来更清晰的对我说:
=CONCATENATE(StreetNumber," ",StreetName," ",StreetType) & CHAR(10) & CONCATENATE(CityName," ",StateCode," ",ZipCode) & CHAR(10) & CountryName
Run Code Online (Sandbox Code Playgroud)
比独家使用&:
=StreetNumber & " " & StreetName & " " & StreetType & CHAR(10) & CityName & " " & StateCode & " " & ZipCode & CHAR(10) & CountryName
Run Code Online (Sandbox Code Playgroud)
并且独家使用CONCATENATE
=CONCATENATE(StreetNumber," ",StreetName," ",StreetType,CHAR(10),CityName," ",StateCode," ",ZipCode,CHAR(10),CountryName)
Run Code Online (Sandbox Code Playgroud)
再说一次,我认为像 UDF 这样的BuildAddress解决方案是更好的解决方案(并且可以更好地处理国际化域中地址格式的微妙之处 - 尽管我还没有实现)...
=CONCATENATE(StreetNumber," ",StreetName," ",StreetType) & CHAR(10) & CONCATENATE(CityName," ",StateCode," ",ZipCode) & CHAR(10) & CountryName
Run Code Online (Sandbox Code Playgroud)
但也许另一个例子,包括& 在字符串文字中的使用,更好地展示了阅读强制自己专门使用运算符的公式的难度:
=StreetNumber & " " & StreetName & " " & StreetType & CHAR(10) & CityName & " " & StateCode & " " & ZipCode & CHAR(10) & CountryName
Run Code Online (Sandbox Code Playgroud)
可能更好地写成:
=CONCATENATE(StreetNumber," ",StreetName," ",StreetType,CHAR(10),CityName," ",StateCode," ",ZipCode,CHAR(10),CountryName)
Run Code Online (Sandbox Code Playgroud)
但性能才是最重要的,根据连接的参数数量和每个参数的长度,该CONCATENATE函数似乎比连接运算符的性能好 4 到 6 倍。不可否认,这个例子是极端的,有255 个参数被连接,10,000 次。我不建议使用大于 32 的参数字符串长度,否则可能会耗尽内存/导致 Excel 崩溃。
这是一个粗略的计时机制:
Public Function BuildAddress(ByVal StreetNumber As String, ByVal StreetName As String, _
ByVal StreetType As String, ByVal CityName As String, ByVal StateCode As String, _
ByVal ZipCode As String, ByVal CountryName As String) As String
BuildAddress = StreetNumber & " " & StreetName & " " & StreetType & vbCrLf & _
CityName & " " & StateCode & " " & ZipCode & vbCrLf & _
CountryName
End Function
Run Code Online (Sandbox Code Playgroud)
结果,根据参数字符串的长度:
=A1&"A2&A3&A4"&A5
Run Code Online (Sandbox Code Playgroud)
但是,我们甚至还没有讨论房间里的大象。您正在使用串联构建 SQL 命令。不要那样做。您正在执行一个接受参数的存储过程。除非您已经清理了您的输入(我猜您还没有),否则使用串联构建 SQL 字符串就是要求进行 SQL 注入攻击。您不妨公开一个名为JohnnyDropTables...的UDF
这是语义域差异。Concatenate 是电子表格函数的名称。与号是从 Visual Basic 借用的连接运算符。从不使用 VBA 的人会发现一个函数比 VBA 语法更容易使用。这与为什么有一个热键、一个图标和一个保存菜单选项的原因相同,这使软件更易于使用。
| 归档时间: |
|
| 查看次数: |
19134 次 |
| 最近记录: |