私は、Excelがフォーマットを理解できないことが問題であると疑うだろう… 日付書式を選択しても、テキストのままです。
これは簡単にテストできます。あなたが日付のフォーマットを更新しようとすると、列を選択し、それを右クリックして、(あなたがすでに行っているように)セルの書式設定を選択しますが、オプション2001-03-14(リストの下部近く)を選択します。そして、セルのフォーマットを確認してください。
私は、Excelがまだ日付ではなく、文字列のようにそれを処理していることを示す、日付フォーマットの一部だけが正しく更新されることを疑うでしょう(下のスクリーンショットの異なるフォーマットに注意してください)!
これのための回避策がありますが、あなたが毎回エクスポートしているので、それらのどれもが単純に自動化されません。私はVBaを使用することを提案します。ここでは、単に米国から英国の日付フォーマットに変換するマクロを実行することができますが、これは、毎回シートに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
私がしたことは、この方法では、Excelが最新の値の代わりにソートフィルタA-Zを与える場合でも、それはまだ動作しますので、yyyy-mm-ddに日付形式を更新しました!
私がしたことを確認してください!
私がしたことを確認してください。
私は上記のコードにバグがあると確信していますが、私は明らかにあなたが持っているデータの種類を知らないが、私は(あなたが持っているように)日付の単一の列でそれをテストし、それは私のために正常に動作します!
[ どのように私はMS OfficeでVBAを追加するには?