Я б підозрював, що проблема в тому, що Excel не в змозі зрозуміти формат ... Хоча ви вибираєте формат дати, він залишається як текст.
Це можна легко перевірити: Коли ви намагаєтесь оновити формат дат, виберіть стовпчик і клацніть правою кнопкою миші на ньому та виберіть клітинки формату (як ви вже робите), але виберіть варіант 2001-03-14 (біля нижньої частини списку). Потім перегляньте формат ваших комірок.
Я підозрюю, що лише деякі формати дати оновляються правильно, вказуючи на те, що Excel все ще трактує його як рядок, а не дату (зверніть увагу на різні формати на нижньому екрані знімка)!
Для цього існують робочі місця, але жоден з них не буде автоматизований просто тому, що ви експортуєте кожного разу. Я б запропонував використовувати VBa, де ви можете просто запустити макрос, який перетворює формат дати від США до Великобританії, але це означатиме копіювання та вставлення VBa у ваш аркуш кожного разу.
Крім того, ви створюєте Excel, який читає щойно створені експортовані листи Excel (з обміну), а потім виконує VBa, щоб оновити формат дати для вас. Я припускаю, що експортований файл Exchange Excel завжди матиме однакове ім’я / каталог та надаватиме робочий приклад:
Отже, створіть новий аркуш Excel під назвою ImportedData.xlsm (excel увімкнено). Це файл, куди ми імпортуємо експортований файл Exchange 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 замість новіших значень, він все ще працює!
Я впевнений, що у наведеному вище коді є помилки, але я, очевидно, не маю уявлення, який тип даних у вас є, але я протестував його за допомогою одного стовпця дат (як у вас є), і він працює добре для мене!
Як додати VBA в MS Office?