Excel 中与区域设置无关的文本函数

ElR*_*udi 7 excel

我需要在 excel 中格式化日期,并且我正在尝试使用该TEXT公式。问题在于 Excel 对参数的解释会随着语言环境的变化而变化。

例如:如果我在单元格 A1 中有一个日期,我想以年月日格式转换为文本,=TEXT(A1, "yyyy-mm-dd")如果我的电脑有英语语言环境,我必须使用,但是=TEXT(A1, "jjjj-MM-tt")(我孩子你不是,M必须是大写)如果它有德语语言环境。这使得文档不可移植。(第二个参数是纯文本,因此在更改区域设置时不会转换。)

评论:

  • 这只是一个例子,我知道=YEAR(A1) & "-" & TEXT(MONTH(A1), "00") & "-" & TEXT(DAY(A1), "00")在这种情况下我可以做很长时间。我想知道更一般的情况。

  • 日期不应该只是以某种格式显示,它实际上应该是一个字符串。对于查看文件的人来说,这没有什么区别,但是在其他公式中使用它时,它确实如此。

  • 我可以用 VBA 写一个 UDF 来解决这个问题,但我不能在这个文档中使用 VBA。

  • 我不在乎更改月份的名称等。如果月份的名称是 June 或 Juni,这取决于语言环境。

  • 我想强调的是,该问题是由 PC 的语言环境引起的 - 而不是由于 MS Office 版本的 GUI 语言。在上面的例子中,Excel 的 GUI 和公式在两个例子中都是英文的;我刚刚更改了机器上的语言环境。

非常感谢

Chr*_*dal 7

这是一个稍微作弊的方法:使用 aVLOOKUP值,该值将根据您的系统语言而变化 - 例如TEXT(1,"MMMM")

=VLOOKUP(TEXT(1,"MMMM"),{"January","yyyy-MM-dd";"Januar","jjjj-MM-tt"},2,FALSE)
Run Code Online (Sandbox Code Playgroud)

英语: Text(1,"MMMM") = "January",所以我们VLOOKUP对下面的数组执行 a 以获得“yyyy-MM-dd”

"January" , "yyyy-MM-dd" ;
"Januar"  , "jjjj-MM-tt"
Run Code Online (Sandbox Code Playgroud)

Auf Deutsche,Text(1,"MMMM") = "Januar"也 wir machen einen SVERWEISauf dem Array oben,嗯“jjjj-MM-tt”zu erhalten!:)

TEXT然后,只需在您的函数中使用它:

=TEXT(A1, VLOOKUP(TEXT(1,"MMMM"),{"January","yyyy-MM-dd";"Januar","jjjj-MM-tt"},2,FALSE))
Run Code Online (Sandbox Code Playgroud)

显然,这种方法有效的主要原因是它对TEXT(1,"MMMM")德语和英语都有效。如果您使用菲律宾语(其中“月份”是“Buwan”)之类的内容,那么您可能会在寻找相互理解的格式输入时发现一些问题。