Excel 将美国日期格式转换为英国日期格式

Excel 将美国日期格式转换为英国日期格式,excel,vba,date-format,Excel,Vba,Date Format,我已经下载了coronovirus covid-19时间序列数据集,需要将.csv文件中的列标题转换为英国日期格式。然后,我想将列标题设置为图表上的日期轴,以绘制感染率 数据集从1/22/20、1/23/20开始,然后更改为2020年1月2日、2020年2月2日,然后更改为20年2月13日、20年2月14日,然后更改为2020年1月3日、2020年2月3日。这些都是M/D/Y 我编写了一个Excel VBA宏,它检查M值是1还是2位,如果是1,则添加一个零以确保一致性。由于文本到列的转换仍然没有

我已经下载了coronovirus covid-19时间序列数据集,需要将.csv文件中的列标题转换为英国日期格式。然后,我想将列标题设置为图表上的日期轴,以绘制感染率

数据集从1/22/20、1/23/20开始,然后更改为2020年1月2日、2020年2月2日,然后更改为20年2月13日、20年2月14日,然后更改为2020年1月3日、2020年2月3日。这些都是M/D/Y

我编写了一个Excel VBA宏,它检查M值是1还是2位,如果是1,则添加一个零以确保一致性。由于文本到列的转换仍然没有像预期的那样起作用,因此我添加了从20年到2020年的修正,以提供一致的输入数据集

我使用的代码是:

Sub usDateToUkDate()

    Dim r As Range
    Dim cells As Integer
    Dim cell As Range

    Set r = Range("E1", Range("E1").End(xlToRight))
    For Each cell In r
        cell.Select
        If Left(ActiveCell.Value, 1) <> 0 Then
            cell.Value = "0" & cell.Value
        End If
        If Len(ActiveCell.Value) <> 10 Then
            cell.Value = Replace(cell.Value, "20", "2020", 7)
        End If

        Selection.TextToColumns Destination:=ActiveCell(), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=False, OtherChar _
            :="/", FieldInfo:=Array(0, 3), TrailingMinusNumbers:=True
        ActiveCell.EntireColumn.AutoFit
    Next cell
End Sub
Sub-usDateToUkDate()
调光范围
将单元格设置为整数
暗淡单元格作为范围
设置r=范围(“E1”,范围(“E1”)。结束(xlToRight))
对于r中的每个单元格
单元格。选择
如果左(ActiveCell.Value,1)0,则
cell.Value=“0”和cell.Value
如果结束
如果Len(ActiveCell.Value)为10,则
cell.Value=替换(cell.Value,“20”,“2020”,7)
如果结束
Selection.TextToColumns目标:=ActiveCell(),数据类型:=xlDelimited_
TextQualifier:=xlDoubleQuote,continuedDelimiter:=False,Tab:=False_
分号:=False,逗号:=True,空格:=False,其他:=False,其他字符_
:=“/”,FieldInfo:=数组(0,3),trailingMinusNumber:=真
ActiveCell.EntireColumn.AutoFit
下一个细胞
端接头
虽然我在复制录制的宏时不完全理解TextToColumns语法,但为什么会得到不一致的结果。我确实将FieldInfo:=数组(1,3)更改为数组(0,3),因为我想从第一个字符开始。我得到的结果是:

数据集:1/22/20 产出:2020年1月22日 结果:正确

数据集:2020年1月2日 产出:2020年1月2日 结果:不正确

根据输入格式重复结果


我做错了什么?是否有更好的方法将日期从美国转换为英国格式?

不是答案,但对Excel和新冠病毒-19文件感到恼火,并求助于其他解决方案。 使用gapminder.org作为可视化工具查看文件。
使用脏工具导入数据,我写道:

一旦数据在Excel中,并且您正在其上运行宏,它已经尝试将日期更改为您的区域设置。如果是日期格式,这会变得非常混乱,因为它会忽略(而不是转换)与它认为的日期不一致的数据。因此,您可以拥有仅部分转换的列。有时最好将列作为纯文本导入,然后再进行转换。@CLR-这真的很有帮助,也很快-谢谢:-)我想我最好使用Jupyter和Python来访问数据,在.CSV级别进行转换,然后从那里进入Power BI?我正在学习Python,但还没有进入Jupyter实验室的数据分析方面,因此我不知道如何在Excel或Power BI之外对数据集进行建模。当然,只需使用VBA就可以了,但除非您与我们分享将数据导入Excel的确切方法,很难推荐修复方法。我找到了从GitHub收集.CSV文件并将其推送到Excel的正确方法。在GitHub中,我发现如果我转到.CSV文件并访问数据,我可以单击Raw按钮,按下Option(Alt)键,文件将以.TXT的形式下载。在Excel中的“数据”中,使用“获取外部数据”部分导入文本数据。首先将文本设置为以逗号分隔的列。然后选择具有日期的列作为列标题,并采用MDY格式的日期函数。Finish然后导入列标题格式正确的文本数据。