programing

텍스트를 날짜로 변환하시겠습니까?

bestprogram 2023. 5. 2. 23:04

텍스트를 날짜로 변환하시겠습니까?

날짜 열(A열)이 텍스트 형식으로 저장되어 있습니다.yyyy-mm-dd궁극적으로 그들을 상대로 검색할 수 있도록 날짜로 변환하려고 합니다.

여기에 대한 몇 가지 주제를 읽고 몇 가지 제안을 시도해 보았지만, 실행할 수 있는 것이 아무것도 없습니다.하나는 다음을 사용했습니다.

Columns("A").Select
Selection.NumberFormat = "date"

이것은 셀의 형식을 날짜로 변경했지만 실제로 텍스트로 저장된 값의 형식은 변경하지 않았습니다.

값의 형식을 텍스트에서 날짜로 변경하려면 CDate()를 사용해야 하는 것으로 알고 있습니다.저는 다음과 같은 것을 시도해 보았습니다.

Dim c As Range
For Each c In ActiveSheet.UsedRange.columns("A").Cells
    c.Value = CDate(c.Value)
Next c

유형 불일치 오류가 발생합니다.날짜 값을 날짜가 아닌 형식의 셀에 다시 저장하려고 했기 때문인지 궁금해서 와 결합해 보았습니다.위의 NumberFormat = "날짜"도 작동하지 않았습니다.

어떤 제안이든 감사하겠습니다.

사용할 수 있습니다.DateValue이 경우 문자열을 날짜로 변환합니다.

Dim c As Range
For Each c In ActiveSheet.UsedRange.columns("A").Cells
    c.Value = DateValue(c.Value)
Next c

변환할 수 있습니다.yyyy-mm-dd문자열을 직접 기본 Excel 날짜 값으로 포맷합니다.

워크시트의 데이터 » 텍스트-열 명령에 해당하는 VBA를 사용하여 날짜와 유사한 텍스트 열을 실제 날짜로 빠르게 변환할 수 있습니다.

With ActiveSheet.UsedRange.Columns("A").Cells
    .TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat)
    .NumberFormat = "yyyy-mm-dd"   'change to any date-based number format you prefer the cells to display
End With

대량 작업은 일반적으로 셀과 VBA의 범위를 순환하는 것보다 훨씬 빠릅니다.TextToColumns 메서드는 매우 빠릅니다.또한 MDY를 자유롭게 설정할 수 있습니다.날짜 형식이 시스템의 국가별 설정과 일치하지 않는 많은 텍스트 가져오기에 문제가 있는 DMY 또는 YMD 변환 마스크.사용 가능한 날짜 형식의 전체 목록은 TextFileColumnDataTypes 속성을 참조하십시오.

주의: 텍스트를 가져올 때 일부 날짜가 아직 변환되지 않았는지 주의하십시오.모호한 월 및 일 정수가 있는 텍스트 기반 날짜가 이미 잘못 변환되었을 수 있습니다. 예: 2015년 7월 11일은 시스템 지역 설정에 따라 07-Nov-2015 또는 11-Jul-2015로 해석되었을 수 있습니다.이런 경우 가져오기를 포기하고 Data ► Get External Data ► From Text로 텍스트를 다시 가져오고 Text Import 마법사에서 올바른 날짜 변환 마스크를 지정합니다.VBA에서 워크북을 사용합니다.텍스트 메서드를 열고 xlColumnDataType을 지정합니다.

다른 옵션 외에도, 저는 다음을 사용하는 것을 확인합니다.

c.Value = CDate(c.Value)

작동합니다(Excel 2010을 사용하여 사례 설명으로 테스트).유형 불일치 오류가 발생하는 이유에 대해서는 이를 확인할 수 있습니다(:

로케일 문제일 수 있습니다.

아마도:

Sub dateCNV()
    Dim N As Long, r As Range, s As String
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To N
        Set r = Cells(i, "A")
        s = r.Text
        r.Clear
        r.Value = DateSerial(Left(s, 4), Mid(s, 6, 2), Right(s, 2))
    Next i
End Sub

이것은 A에 헤더 셀이 없는 2013-12-25와 같은 텍스트 값이 포함되어 있다고 가정합니다.

저도 아까 비슷한 문제가 있었습니다.불행하게도 저는 이 스레드를 보고 만족스러운 답을 찾지 못했습니다.이것이 다른 사람들에게 도움이 되기를 바랍니다.

용사를 합니다.VBA.DateSerial(year,month,day)미국 날짜 형식에 대한 Excel의 고유한 편견을 극복할 수 있습니다.또한 데이터를 완전히 제어할 수 있다는 것을 의미하며, 이는 제가 개인적으로 선호하는 사항입니다.

function convDate(str as string) as Date
  Dim day as integer, month as integer, year as integer
  year  = int(mid(str,1,4))
  month = int(mid(str,6,2))
  day   = int(mid(str,9,2))
  convDate = VBA.DateSerial(year,month,day)
end function

이 코드는 나에게 효과가 있습니다.

Dim N As Long, r As Range
N = Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To N
    Set r = Cells(i, "B")
    r.Value = CDate(r.Value)
Next i

시트에 맞게 열을 변경해 보십시오.

작전 담당자에게...또한 당신의 서브루틴을 처음 실행하려고 했을 때 유형 불일치 오류가 발생했습니다.제 경우 첫 번째 셀(즉, 헤더)의 날짜와 유사하지 않은 데이터 때문에 발생했습니다.테스트를 위해 헤더 셀의 내용을 날짜 스타일의 txt로 변경했을 때, 정상적으로 실행되었습니다.

이것도 도움이 되길 바랍니다.

과거의 폭발이지만, 저는 이것에 대한 쉬운 답을 찾았다고 생각합니다.다음은 저에게 효과가 있었습니다.제 생각에는 F2를 치는 셀을 선택한 다음 Enter를 치는 것과 같아요, 이는 엑셀이 텍스트를 날짜로 인식하게 합니다.

Columns("A").Select
Selection.Value = Selection.Value

다음 코드를 사용하여 유형 불일치를 제거했습니다.

Sub ConvertToDate()

Dim r As Range
Dim setdate As Range

'in my case I have a header and no blank cells in used range,
'starting from 2nd row, 1st column
Set setdate = Range(Cells(2, 1), Cells(2, 1).End(xlDown)) 

    With setdate
        .NumberFormat = "dd.mm.yyyy" 'I have the data in format "dd.mm.yy"
        .Value = .Value
    End With

    For Each r In setdate
        r.Value = CDate(r.Value)
    Next r

End Sub

하지만 제 경우에는 "dd.mm .yyy" 형식의 데이터가 있습니다.

DD-MM-YYYY의 경우 문자열 및 날짜를 관리하는 간단한 해결 방법은 다음과 같습니다.

DD-MMM-YYYY를 통해 문자열에 날짜를 삽입합니다(예: 01-11-2017 -> 01-Nov-2017).

FORMAT(날짜, "dd-mmm-yyyy")를 사용하여 스프레드시트의 문자열에 날짜를 입력할 수 있습니다.

나중에 문자열에서 출력하면 날짜와 월이 혼동되지 않습니다.

문제를 해결했습니다.

    Range(Cells(1, 1), Cells(100, 1)).Select

    For Each xCell In Selection

    xCell.Value = CDate(xCell.Value)

    Next xCell

언급URL : https://stackoverflow.com/questions/20375233/convert-text-to-date