如何创建一个适用于每种语言的带有格式化日期的函数?我想做以下功能:
=CONCATENATE(TEXT(C8;"TT.MM.JJJJ");"/";G8)
这里的问题是,我使用英语客户端,但因为我是德国人,Excel 强制我使用 T 表示日,J 表示年。我认为这会在位于英国的电脑上导致问题(例如)。
我认为 [$-409]
不起作用,因为我仍然必须使用 T 表示日,使用 J 表示年。有没有一个好的解决方案(功能方面)?
最佳答案
如果您传递 ""
中的公式值那么它就不能根据本地化设置进行更改。
一个好方法是使用 VBA 的自定义函数,返回 "TT.MM.JJJJ"
如果您在德国并且 "DD.MM.YYYY"
如果你在英国。
Public Function CorrectString() As String
Select Case Application.International(XlApplicationInternational.xlCountryCode)
Case 1
CorrectString = "DD.MM.YYYY"
Case 49
CorrectString = "TT.MM.JJJJ"
Case Else
CorrectString = "ERROR"
End Select
End Function
允许您像这样调用该函数:
=CONCATENATE(TEXT(C8;CorrectString());"/";G8)
根据 Excel 语言,它会提供德语或英语版本。
要简化公式,请尝试仅调用:
=TEXT(21322;CorrectString())
这应该返回17.05.1958
.
@Dan 在评论中提到的区域语言来源: https://bettersolutions.com/vba/macros/region-language.htm
或者运行此命令来查看当前 Excel 的相应编号:
MsgBox xlApplicationInternational.xlCountryCode
关于Excel TEXT(dd.mm.yyyy) 函数和不同的客户端语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148735/