首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel 2010 -将美国日期更改为英国格式

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

Stack Overflow用户
提问于 2013-08-28 19:58:35
回答 10查看 70.4K关注 0票数 8

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

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

有人能帮我摆脱这些糟糕的美国日期吗?

EN

回答 10

Stack Overflow用户

发布于 2014-03-05 06:04:06

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

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

代码语言:javascript
运行
复制
=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为true,则美国日期看起来像是英国日期,并且已将其序列化为数字。因此,可以将日期格式化为文本,然后再返回到日期。注意,day被传递给第一个DATE函数的month参数来执行转换。如果ISNUMBER为false,则将其存储为字符串,因为Excel不会转换大于12个月的日期字符串。因此,使用字符串函数将其拆分为DATE函数。

票数 6
EN

Stack Overflow用户

发布于 2013-08-28 20:17:19

我假设您收到的日期被格式化为文本,简单地将其格式化为日期不会改变任何事情。您可以在日期上运行以下公式:

代码语言:javascript
运行
复制
=(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,它应该是好的。

票数 2
EN

Stack Overflow用户

发布于 2017-03-21 20:21:39

我尝试了其他一些建议,但似乎都不适合我。在我的例子中,我以M/d/yyyy :mm:ss的形式导入了美国日期。如果你不介意在你的电子表格中使用一些VBA,那么下面的函数可以帮我完成这项工作:

代码语言:javascript
运行
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18487247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档