Excel 2010 - 将美国日期更改为英国格式

时间:2013-08-28 11:58:35

标签: excel date-format

我导入了一个包含2个长列日期的CSV文件。这些日期采用美国格式Aug/28/2013,我希望它们采用标准的英国dd/mm/yyyy格式。

我尝试将单元格格式化为美国日期,然后将它们转换为仅数字格式,以及日期格式框中的各种其他排列,但没有成功。

有人可以把我这些糟糕的美国日期摆脱我吗?

10 个答案:

答案 0 :(得分:16)

不使用公式的另一种解决方案:

  • 选择相关列
  • 选择数据→文本到列...
  • 选择“分隔”,然后单击下一步
  • 取消所有分隔符,然后单击下一步
  • 选择数据列格式“Date:MDY”并单击完成

现在应将日期转换为英国日期。

答案 1 :(得分:4)

问题是,当日期小于13时,美国日期可以被Excel解析为英国日期。当发生这种情况时,Excel会将其转换为本地化的英国序列号(日期)号码。

因此,2014年3月19日显然是美国3月19日的日期。但是05/03/2014是不明确的,因此Excel将其解析为3月5日的本地日期格式,而不是美国5月3日。任何公式都必须检查Excel是否已将美国日期存储为英国日期。英国日期将作为数字存储在Excel中。

=IF(ISNUMBER(A2),DATE(TEXT(A2,"yyyy"),TEXT(A2,"dd"),TEXT(A2,"mm")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))

(对于单元格A2和PC日期中的美国日期为dd / mm / yy)。

如果ISNUMBER为真,则美国日期看起来像英国日期,Excel已将其序列化为数字。因此可以将日期格式化为文本并再次返回日期。注释日传递给第一个DATE函数的month参数以执行转换。 如果ISNUMBER为false,则将其存储为Excel的字符串不会将日期字符串转换为> 12个月。因此,使用字符串函数将其拆分为DATE函数。

答案 2 :(得分:1)

我假设您收到的日期被格式化为文本,而将其格式化为日期并不会改变任何内容。您可以在日期运行以下公式:

=(MID(A1,FIND("/",A1)+1,FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1)-1)&"-"&LEFT(A1,FIND("/",A1)-1)&"-"&RIGHT(A1,4))*1

如果您获得了数字,则只需将其格式化为dd/mm/yyyy即可。

答案 3 :(得分:1)

我尝试了其他一些建议,但似乎没有一个对我有用。在我的情况下,我以M / d / yyyy hh:mm:ss的形式导入美国日期。如果您不介意在电子表格中使用某个VBA,那么以下功能可以帮我完成工作:

Public Function USDate(ds As Variant) As Variant
    Dim sp() As String
    Dim spt() As String
    Dim spt2() As String

    If ds = vbNullString Then
        USDate = ""
    ElseIf IsNumeric(ds) Then 
        ' Convert numeric US dates wrongly interpreted as UK i.e. 1/7/2017 as 7th January 2017
        USDate = DateSerial(Year(ds), Day(ds), Month(ds)) 
    Else
        sp = Split(ds, "/") ' split the date portion
        spt = Split(sp(2), " ") ' split the time from the year
        spt2 = Split(spt(1), ":") 'split the time hms

        USDate = DateSerial(spt(0), sp(0), sp(1)) + TimeSerial(spt2(0), spt2(1), spt2(2))
    End If
End Function

感谢https://stackoverflow.com/users/845584/peterx指出 - 你需要在VBA代码模块中创建函数才能使用这种技术。

只需在电子表格公式中使用它,例如= USDate(A2)

答案 4 :(得分:0)

与此相关,以下简单公式有助于从

更改日期
  

" MM / DD / YYYY"

进入

  

" DD / MM / YYYY"

=VALUE(TEXT(B2,"mm/dd/yyyy"))

答案 5 :(得分:0)

我们可以通过这个更简洁的公式获得两全其美:

=IF(ISNUMBER(A2),VALUE(TEXT(A2,"mm/dd/yyyy")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))

无法找到更短的内容。

答案 6 :(得分:0)

还有一个问题,因为不知何故原始数据应该被读作数字,但事实并非如此。因此,我用1个最终案例更新了公式:

= IFERROR(IF(ISNUMBER(A2),VALUE(TEXT(A2, “MM / DD / YYYY”)),DATE(RIGHT(A2,4),LEFT(A2,FIND( “/”,A2) -1),MID(A2,FIND( “/”,A2)+1,2))),DATE(RIGHT(A2,4),LEFT(A2,FIND( “/”,A2)-1),MID (A2,FIND( “/”,A2)+1,1)))

答案 7 :(得分:0)

当混合格式的日期例如,这可能是棘手的。英国和美国在同一栏目中。我找到了一个有效的,不优雅的解决方案:

Step1) Select the column containing the dates to be converted;

Step2) Format, Cells, Text;

Step3) Format, Cells, Date, US;

Step4) Data, Text to column, Next, Delimited, Next, delete all delimiters, Next, select format MDY;

Step5) Format, Cells, Date, UK.

Step4已经在其他地方被建议了,但是它本身并没有为我做这件事。我希望将这些步骤结合到一个宏中,但到目前为止还没有成功。

答案 8 :(得分:0)

我无法获得最常见的工作答案,对我来说最有效的过程是:

对于日期10/04/2018 11:49:20,右键单击单元格,然后在“设置单元格格式”的“数字”选项卡上单击鼠标右键,然后选择“自定义”类别,然后选择mm/dd/yyyy hh:mm

答案 9 :(得分:0)

假设您以字符串开头(而不是仅以美国格式格式化的内部excel日期编号-这是一个简单的解决方法),有人可以告诉我为什么此方法不起作用吗?

使用DATEVALUE / TIMEVALUE函数将其转换为excel内部格式化的日期数字(如果之前或之后有多余的位,则可能需要对字符串进行MID())。

只需确保您的区域设置与输入日期格式匹配(否则DATEVALUE将失败,并且您将收到#VALUE错误)。

然后设置单元格格式以显示所需的方式(自定义格式,例如“ dd / mm / yyyy hh:mm:ss”)。

如果您还想更改时区,则可以添加(小时/ 24)到内部Excel excel格式的日期编号。