我需要在 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 和公式在两个例子中都是英文的;我刚刚更改了机器上的语言环境。
非常感谢
这是一个稍微作弊的方法:使用 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 SVERWEIS
auf 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”)之类的内容,那么您可能会在寻找相互理解的格式输入时发现一些问题。
归档时间: |
|
查看次数: |
1776 次 |
最近记录: |