Excel에서 형식을 이해할 수없는 것으로 의심됩니다. 날짜 형식을 선택하더라도 텍스트로 유지됩니다.
이것을 쉽게 테스트 할 수 있습니다 : 날짜 형식을 업데이트하려고 할 때 열을 선택하고 마우스 오른쪽 버튼을 클릭하고 형식 셀을 선택하십시오 (이미 수행 한 것처럼) 2001-03-14 옵션 (목록 하단 근처)을 선택하십시오. 그런 다음 셀 형식을 검토하십시오.
Excel에서 날짜 형식이 아닌 문자열처럼 취급한다는 것을 나타내는 일부 날짜 형식 만 올바르게 업데이트된다고 의심합니다 (아래 스크린 샷의 다른 형식 참고)!
이에 대한 해결 방법이 있지만 매번 내보내는 이유만으로는 자동화되지 않습니다. VBa를 사용하는 것이 좋습니다. 여기서 미국에서 영국 날짜 형식으로 변환하는 매크로를 간단하게 실행할 수 있지만 매번 VBa를 복사하여 시트에 붙여 넣는 것을 의미합니다.
또는 새로 만든 내 보낸 Excel 시트 (교환에서)를 읽는 Excel을 만든 다음 VBa를 실행하여 날짜 형식을 업데이트합니다. 내 보낸 Exchange Excel 파일의 파일 이름 / 디렉토리는 항상 같고 실제 예제를 제공한다고 가정하겠습니다.
따라서 ImportedData.xlsm (excel 사용)이라는 새 Excel 시트를 만듭니다. Exported 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에서 최신 값 대신 정렬 필터 AZ를 제공하더라도 여전히 작동하므로 날짜 형식을 yyyy-mm-dd로 업데이트했습니다.
위의 코드에 버그가 있다고 확신하지만 어떤 유형의 데이터가 있는지는 모르지만 단일 날짜 열로 테스트했지만 제대로 작동합니다!
MS Office에서 VBA를 어떻게 추가합니까?