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

标签 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 和公式在两个示例中都是英文的;我刚刚更改了计算机上的区域设置。

非常感谢

最佳答案

这里有一个稍微欺骗性的方法:对将根据您的系统语言而变化的值使用 VLOOKUP - 例如 TEXT(1,"MMMM")

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

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

"January" , "yyyy-MM-dd" ;
"Januar"  , "jjjj-MM-tt"

Auf Deutsche,Text(1,"MMMM") = "Januar",也 wir machen einen SVERWEIS auf dem Array oben,um "jjjj-MM-tt “祖尔哈尔滕! :)

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

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

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

关于excel - Excel 中与区域设置无关的文本函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56901270/

相关文章:

c# - 为什么在 Excel 中比较 1<' 或将任何数字与带有 < 的任何文本进行比较结果为真?

excel - 如何在 Microsoft Excel 中打开以空格分隔的文件?

excel - 在 Excel 中搜索并返回多个文本字符串

xml - 使用 XML 格式化 Excel 内部单元格字体

excel - Excel 表格中的用户表单操作

Android google drive api 创建和编辑 excel 文件

vba - FollowHyperlink 事件 - 如何阻止链接打开?

php - 从 Excel CSV 文件动态创建 MySQL 表

VBA - 使用用户定义公式的表上的 Range.Copy 方法错误

excel - 具有三种可能结果的 IF 语句 - 参数太多?