Karan은 통합 문서에 많은 텍스트 데이터가 있습니다. 일부 텍스트 데이터에는 날짜가 포함되어 있습니다. 그녀는 날짜를 제거 할 방법이 필요하지만 셀에있을 수있는 다른 텍스트는 남겨 둡니다. 예를 들어, “4/15/16 test ran successfully”또는 “test ran on 4/15/16″로 시작하는 것은 삭제 후 “

test ran successfully”및 “test ran on”이됩니다.

날짜가 항상 간단한 패턴을 따르는 경우 SUBSTITUTE 함수를 사용하여 제거 할 수 있습니다. 예를 들어, 날짜가 항상 한 자리 월과 두 자리 일로 구성된 경우 다음을 사용하여 제거 할 수 있습니다.

=SUBSTITUTE(A1,MID(A1,SEARCH("?/??/??",A1),7),)

이러한 공식에는 여러 가지 문제가 있습니다. 첫째, A1 셀에 날짜가 없거나 A1 셀에 날짜가 한 자리 숫자 인 경우 오류 값을 반환합니다. 또한 날짜에 두 자리 월이있는 경우 첫 번째 자리를 그대로 두거나 (날짜가 두 자리 일을 사용하는 경우) 오류 값을 반환합니다 (날짜가 한 자리 일을 사용하는 경우).

날짜가 셀의 텍스트 시작 또는 끝에 나타나는 경우 다른 유형의 수식을 사용할 수 있습니다.

=IFERROR( IF( VALUE( LEFT( A1, 1)) > 0, RIGHT( A1, LEN(A1) - 7), ""), LEFT( A1, FIND( "/", A1) - 2))

이 방법의 문제점은 정확한 패턴 M / DD / YY 또는 MM / D / YY가 필요하다는 것입니다. 따라서 이전 공식과 동일한 문제를 나타냅니다.

보다 다양한 방법은 매크로를 사용하여 날짜를 검색 한 다음 문자열에서 제거하는 것입니다. 다음 예제 매크로는 셀의 내용을보고 Split 기능을 사용하여 “단어”로 나눕니다. 그런 다음 단어가 날짜가 아닌 한 단어를 다시 합치기 시작합니다.

Function RemoveDates(ByVal vC As String)

Dim arr As Variant     Dim s As String     Dim i As Integer

RemoveDates = ""

If vC > "" Then         arr = Split(vC, " ")

For i = LBound(arr) To UBound(arr)

If Not IsDate(arr(i)) Then                 s = s & arr(i) & " "

End If         Next i         RemoveDates = Left(s, Len(s) - 1)

End If End Function

다음과 같이 워크 시트에서 사용자 정의 함수로 매크로를 사용합니다.

=RemoveDates(A1)

이 매크로의 유일한 단점은 단어 사이에 공백이 여러 개있는 경우 대체 프로세스에서 해당 공백이 제거된다는 것입니다. 이것이 큰 문제라면 다음과 같이 매크로의 정규 표현식에 의존하는 것을 고려할 수 있습니다.

Function RemoveDates(MyRange As Range) As String     Dim sRaw As String     Dim sPattern As String     Dim regEx As New RegExp

sRaw = MyRange.Value

sPattern = "[0-9]{1,2}[-.\\/][0-9]{1,2}[-.\\/][0-9]{2}"



With regEx         .Global = True         .MultiLine = True         .IgnoreCase = False         .pattern = sPattern     End With

If regEx.Test(sRaw) Then         RemoveDates = regEx.Replace(sRaw, "")

Else         RemoveDates = "Not matched"

End If     Set regEx = Nothing End Function

이 함수는 이전 사용자 정의 함수와 같은 방식으로 워크 시트에서 사용됩니다.

=RemoveDates(A1)

정규 표현식의 사용은 어떤 사람들에게는 검은 예술처럼 보일 수 있지만,이 특정한 사용법은 다소 간단합니다. 패턴 (sPattern 변수에 저장 됨)은 하나 또는 두 개의 숫자 뒤에 구분자 문자 (대시, 마침표, 백 슬래시 또는 슬래시)와 하나 또는 두 개의 숫자 이상, 다른 구분자 문자와 두 자리 숫자가 차례로 오는 것은 데이트. 이러한 일치 항목이 셀에서 발견되면 제거됩니다.

일반 에스 프레 션 방식을 사용하려면 Visual Basic Editor에서 다음 라이브러리에 대한 참조를 포함해야합니다 (도구 메뉴에서 참조 선택).

Microsoft VBScript Regular Expressions 5.5

또한 참조하는 셀에 날짜가 없으면 함수가 “일치하지 않음”을 반환한다는 점에 유의해야합니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (7768)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.