【问题标题】:Common Date formatting formula for English and German英语和德语的通用日期格式公式
【发布时间】:2019-09-25 13:13:40
【问题描述】:

我在 Excel 中有一个公式可以将日期格式化为指定格式(=text(date,"dd-mm-yyyy"),该文件也用于瑞士,其系统日期设置为德语(瑞士)。所以它没有正确显示。如何在公式?

我不想格式化单元格。我需要它在公式中。

=text(date,"dd-mm-yyyy")

该文件将被两个用户(英语和德语)使用。需要一个通用的公式。以及如何在 vba 中做同样的事情。我用过

format$(date,"dd-mm-yyyy")

英语。

【问题讨论】:

标签: excel date format


【解决方案1】:

'代码改编自http://www.vbforums.com/showthread.php?33984-How-to-GET-the-system-date-format-from-regional-settings

选项显式

Private Declare PtrSafe Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_SSHORTDATE = &H1F ' short date format string
Private Const LOCALE_SLONGDATE = &H20 ' long date format string

Function LocaleString()
    Dim strLocale As String
    Dim lngRet As Long
    Dim strMsg As String

    'Get short date format
    strLocale = Space(255)
    lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strLocale, Len(strLocale))
    strLocale = Left(strLocale, lngRet - 1)
    LocaleString = strLocale
End Function

Function CDateLocale(d As Date) As String
  CDateLocale = Format(d, LocaleString())

End Function

在一个模块中,您可以使用 =CDateLocale(A1) 将 A1 中的日期转换为本地短日期格式,但作为文本而不是日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多