問題はExcelが形式を理解できないことだと思います...日付形式を選択しても、テキストのままです。
これは簡単にテストできます。日付形式を更新する場合は、列を選択して右クリックし、セルの形式を選択します(既に行っているように)が、オプション2001-03-14(リストの下部近く)を選択します。次に、セルの形式を確認します。
日付形式の一部のみが正しく更新され、Excelが日付ではなく文字列のように処理していることを示していると思われます(下のスクリーンショットの異なる形式に注意してください)!
これには回避策がありますが、毎回エクスポートしているという理由だけで自動化されません。VBaを使用することをお勧めします。ここでは、USからUKの日付形式に変換するマクロを簡単に実行できますが、これは毎回VBaをシートにコピーして貼り付けることを意味します。
または、(交換から)新しく作成されたエクスポートされたExcelシートを読み取るExcelを作成し、VBaを実行して日付形式を更新します。エクスポートされたExchange Excelファイルは常に同じファイル名/ディレクトリを持ち、動作例を提供すると仮定します。
そのため、ImportedData.xlsm(Excelが有効)と呼ばれる新しい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を提供したとしても機能するためです。
上記のコードにはバグがあると確信していますが、どのタイプのデータがあるのかは明らかにわかりませんが、1列の日付(あなたが持っているように)でテストしましたが、私にとってはうまくいきます!
MS OfficeにVBAを追加するにはどうすればよいですか?