我怀疑问题是Excel无法理解格式...尽管您选择了日期格式,但仍保留为文本格式。
您可以轻松地进行测试:当您尝试更新日期格式时,选择该列并右键单击它,然后选择格式单元格(就像您已经做的那样),但是选择选项2001-03-14(在列表的底部)。然后查看单元格的格式。
我会怀疑只有某些日期格式可以正确更新,这表明Excel仍将其视为字符串,而不是日期(请注意以下屏幕截图中的不同格式)!
有一些解决方法,但是,没有一个方法会因为您每次都导出而自动实现。我建议使用VBa,您可以在其中运行一个宏,将宏从美国日期格式转换为英国日期格式,但这意味着每次都将VBa复制并粘贴到工作表中。
或者,您可以创建一个Excel(从交易所读取新创建的导出的Excel工作表),然后执行VBa为您更新日期格式。我将假定导出的Exchange Excel文件始终具有相同的文件名/目录,并提供一个有效的示例:
因此,创建一个新的Excel表格,称为ImportedData.xlsm(启用excel)。这是我们将导出的Exchange Excel文件导入到的文件!
将此VBa添加到ImportedData.xlsm文件
Sub DoTheCopyBit()
Dim dateCol As String
dateCol = "A" 'UPDATE ME TO THE COLUMN OF THE DATE COLUMN
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
directory = "C:\Users\Dave\Desktop\" 'UPDATE ME
fileName = Dir(directory & "ExportedExcel.xlsx") 'UPDATE ME (this is the Exchange exported file location)
Do While fileName <> ""
'MAKE SURE THE EXPORTED FILE IS OPEN
Workbooks.Open (directory & fileName)
Workbooks(fileName).Worksheets("Sheet1").Copy _
Workbooks(fileName).Close
fileName = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Dim row As Integer
row = 1
Dim i As Integer
Do While (Range(dateCol & row).Value <> "")
Dim splitty() As String
splitty = Split(Range(dateCol & row).Value, "/")
Range(dateCol & row).NumberFormat = "@"
Range(dateCol & row).Value = splitty(2) + "/" + splitty(0) + "/" + splitty(1)
Range(dateCol & row).NumberFormat = "yyyy-mm-dd"
row = row + 1
Loop
End Sub
我所做的就是将日期格式更新为yyyy-mm-dd,因为这样,即使Excel为您提供了排序过滤器AZ而不是最新值,它仍然可以工作!
我确定上面的代码中存在错误,但是我显然不知道您拥有哪种类型的数据,但是我使用单列日期(如您所愿)对其进行了测试,并且对我来说很好!
如何在MS Office中添加VBA?