【问题标题】:How to properly format dates in Google Sheets or Microsoft Excel如何在 Google 表格或 Microsoft Excel 中正确格式化日期
【发布时间】:2022-10-30 20:10:07
【问题描述】:

我有一个需要在 Google 表格中制作的电子表格。一些数据的来源被导出到 Excel 工作表。数据以dd/mm/yyyy 格式到达,我需要以MON d 格式显示它(Ex Sep 5)。

问题是 Excel 和工作表都查看到达的日期并认为它是 mm/dd/yyyy。

例如,02/08/2022 被认为是 2 月 8 日,即使它应该是 8 月 2 日。然后出现的问题是这些平台最终都不知道如何将其转换为 8 月 2 日,而我最终不得不手动执行此操作.

有谁知道如何解决这个问题?

我已经尝试调整日期的格式,以及使用 DateValue 进行转换(这会失败,因为它会将日期理解为 mm/dd/yyyy,即使它是 dd/mm/yyyy)。

任何线索将不胜感激!

谢谢!

【问题讨论】:

  • Excel 处理日期格式的方式是否与 Googlesheets 相同?如果没有,则仅在一个中工作并最终导出到另一个。
  • 你想要将 02/08/2022 转换为 8 月 2 日的公式吗?
  • @SolarMike 据我所见,它似乎很相似。已经尝试过那条路
  • @player0 理想的格式,但如果公式是唯一的方法,那么是的。目前它采用文本并将其保留为它来的格式(不理想)或将其更改为完全不正确的日期(坏)
  • 在任一程序中,您都需要在进口文件。如果你只是打开该文件,程序将根据您的 Windows 区域设置解释这些值。如果您的原始文件是 CSV 文件,那么进口使用 Power Query 或旧版导入向导导入 Excel 并指定当时的日期类型。

标签: excel date google-sheets


【解决方案1】:

在 Google 表格中,选择文件 > 设置 > 区域设置并选择使用 dd/mm/yyyy 日期格式的语言环境,导入数据。然后,您可以按照您喜欢的方式格式化日期列。

【讨论】:

  • 这是用于excel,工作表还是两者兼而有之?使用 excel 从网站导出数据,然后复制/粘贴到工作表中
  • 答案是谷歌表格。恐怕您的过程描述仍然不清楚。在问题.
【解决方案2】:

在 gs 中:

=TEXT(REGEXREPLACE(A1&""; "(d+)/(d+)/(d+)"; "$1/$1/$3"); "mmm d")

【讨论】:

    【解决方案3】:

    尝试以下和根据您的喜好格式化结果

    =INDEX(IF(ISNUMBER(U2:U5),U2:U5,
               IF(U2:U5=DATEVALUE("1899-12-30"),, 
                   (MID(U2:U5,4,3)&LEFT(U2:U5,3)&RIGHT(U2:U5,4))*1)))
    

    (调整公式根据您的范围和语言环境)

    使用的功能:

    【讨论】:

      【解决方案4】:

      好吧,对于一个公式化的解决方案,如果日期在 A1 中,那么以下将正确的日期放在 B1 中:

      =DATEVALUE(TEXT(A1,"DD/MM/YYYY"))
      

      TEXT 函数在导入期间生成的字符串与导入的字符串格式相同。 DATEVALUE 然后给出您想要的正确日期。

      诀窍是在TEXT 步骤中,您可以在DATEVALUE 的字符串中反转月份和日期。

      自然地,它可以代替辅助列,而只是围绕对 A 列中日期的任何引用,尽管人们必须记住在使用电子表格的所有年份中都这样做。

      如果您正在导入,而不仅仅是通过File|Open 打开一个 .CSV 文件并从那里开始,您就有机会解决所有问题。您使用功能区菜单系统的数据菜单,选择最左边的东西,Get Data,然后从下拉菜单中(不要争论这不是菜单)Legacy Wizards,最后是From Text (Legacy),它将打开旧的Excel 导入向导。 (您可能会注意到这与Data|Text to Columns Ribbon 菜单选项非常相似,这是因为该选项是旧向导减去开始时查找另一个文件以获取数据的步骤,因为它知道,根据法律,它有已经在电子表格中......换句话说,它看起来一样,因为它是一样的。)

      然后为它呈现给您的前几个对话框进行选择,以进入您告诉它导入列的对话框:常规(让 Excel 决定)、文本、日期和不导入。选择Date 并选择DMY 以按照您的意愿正确导入它们,这样您根本不会遇到问题。

      正如您可能猜到的那样,当您看到它们被反转时,您可以通过“文本到列”功能使用缩写向导在导入后执行相同的操作。由于它是单列数据,因此结果将覆盖原始数据,从而简化您的工作。

      为什么会发生这种情况?好吧,“语言环境”的人有这个想法。当 Excel 以它识别的可能是日期的形式导入数字时,它会查看操作系统设置以了解所选日期的理解方式。因此,如果您的操作系统认为日期应该显示为“月日,年”,并且 Excel 有一组它认为符合该模式的数据,它将使用它来转换它们。所以你得到的是 2 月 8 日的而不是 8 月 2 日的。

      有趣的是,它还做了另外两件值得注意的事情:

      1. 它会查看 8 个、计数、8 行数据来确定数据是否符合模式。即使有 1,000,000 行要导入,它看起来... 8。
      2. 然后它就好像上帝自己写了“8”一样......并且像 25/03/2022 这样的日期被导入为文本而不是真正的日期,因为它们(哦,显然)不能是日期。 ..“25”不能是一个月!

        可以更改设置(DEEP 设置)以使 Excel 在决定此类事情之前考虑数据集中的 X 行数。曾几何时,我在这里,在互联网上找到了它们,尽管我不应该再次尝试找到它们。它会在这样的导入中考虑多达一百万行,但是......这会让它变得非常慢。这是每个数据列的一百万行。我什至不会说“加起来”——我会指出它“加起来”。

        另一种技术是添加一些起始行以强制导入所需的模式。我听说它可以在 TIME 列导入中使用,所以它应该在 DATE 列导入中,但我还没有验证过。

        我敢打赌,如果您可以使用动手方法,您会发现最常用的“文本到列”功能的使用 - 它确实需要您的文字操作,但操作速度很快。如果你会看到其他人使用电子表格......好吧,你需要一个公式化的解决方案或一个 VBA 一个(带有按钮的宏,让他们有一些乐趣点击作为他们接受培训而不是抱怨的奖励)老板,您制作了糟糕的电子表格)。对于公式化解决方案,上述公式很简单。

        不过最后的想法是:其中没有错误检查和错误克服。因此,作为文本导入的数据中的“25/03/2022”之类的日期是一个问题。为了处理后者,最新的方法可能是:

        =IF(TYPE(A1)=1,DATEVALUE(TEXT(A1,"dd/mm/yyyy")),DATE(INDEX(TEXTSPLIT(A1,"/"),1,3),INDEX(TEXTSPLIT(A1,"/"),1,2),INDEX(TEXTSPLIT(A1,"/"),1,1)))
        

        其中DATE(etc. 部分处理查找“25/03/2022”类型的文本。许多不那么最新的分割文本 Excel 的方法会放在列中,但是因为演示如果存在该怎么做是重点,我采取了简单的方法。 (尝试了一个简单的版本,但它不会从我那里获取INDEX(TEXTSPLIT(A1,"/"),1,{3,2,1}) 作为DATE 的输入参数。)TYPE 如果 Excel 将基准导入为日期(数字),将给出 1,如果作为文本引入。如果可能存在空字符串或奇怪的字符串,则您还需要处理那些呈现给您的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-15
        • 2022-10-04
        • 2014-11-08
        • 2013-09-18
        • 2012-07-02
        • 2015-07-26
        • 2022-07-21
        • 2021-06-05
        相关资源
        最近更新 更多