Excel TEXT(dd.mm.yyyy) 函数和不同的客户端语言

标签 excel function excel-formula vba

如何创建一个适用于每种语言的带有格式化日期的函数?我想做以下功能:

=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/

相关文章:

excel - PowerPivot 中的计算字段

r - 在R中的列表列表中获取2个变量的平均值

excel - 带有嵌套 OR 的计数

c++ - 使 excel 在单个打印作业中打印多个工作表

Excel 如何将日期时间转换为仅日期 - m/d/YYYY 格式

python - 使用python将多个excel文件转换为csv文件

c++ - C:使用同一项目中文件中的函数

function - Powershell Cmdlet.ShouldProcess 方法默认答案

excel - 在 excel 中组合两个数字,同时确保第二个数字有两位数

Excel:如何从单元格中删除所有回车符?