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

时间:2020-03-11 10:48:44

标签: excel vba date-format

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

数据集以1/22 / 20、1 / 23/20开头,然后更改为02/01 / 2020、02 / 02/2020,然后更改为2/13 / 20、2 / 14/20和然后是03/01 / 2020、03 / 02/2020。这些都是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

虽然在复制记录的宏时我不完全了解TextToColumns语法,但是为什么会得到不一致的结果。我确实想从第一个字符开始将FieldInfo:= Array(1,3)更改为Array(0,3)。我得到的结果是: Summary output

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

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

根据输入格式重复结果。

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

1 个答案:

答案 0 :(得分:0)

没有答案-但是对Excel和covid-19文件感到恼火,并求助于其他解决方案。 使用gapminder.org作为可视化工具查看文件。 使用我编写的肮脏工具导入数据:https://github.com/perolo/covid19togapminder