텍스트 내에서 패턴 추출 (Microsoft Excel)
Tom에는 텍스트 데이터로 가득 찬 약 20,000 개의 셀이 포함 된 워크 시트가 있습니다. 이 셀 내에서 특정 텍스트 패턴을 추출해야합니다. 패턴은 –###이며 여기서 각 #은 숫자입니다. 이 패턴은 각 셀의 설정된 위치에 나타나지 않습니다. Tom은 원하는 정보를 추출하는 방법이 있는지 궁금합니다.
이 문제에 접근 할 수있는 방법에는 여러 가지가 있으며 요구 사항에 맞는 올바른 솔루션은 작업중인 데이터의 특성에 따라 달라집니다. 데이터에서 대시가있는 유일한 위치가 패턴 내에 있다는 것을 알고있는 경우 다음과 같은 공식을 사용하여 대시의 존재를 키 오프 할 수 있습니다.
=MID(A1,FIND("-",A1)-2,8)
대시를 찾은 다음 대시 왼쪽에서 두 문자로 시작하는 8 개의 문자를 가져옵니다. 텍스트의 다른 위치에 대시가 있거나 숫자가 아닌 “패턴”(예 : 12-34B32)을 포함 할 수 있고이를 제외하려는 경우에는 분명히 작동하지 않습니다. 이 경우 훨씬 더 복잡한 공식이 필요합니다.
=IF(ISERROR(INT(MID(A1, FIND("-", A1, 1)-2, 2)) & INT(MID( A1, FIND("-", A1, 1)+1, 5))), "", MID(A1, FIND("-", A1)-2, 8))
여기에는 대시 바로 앞과 대시 바로 뒤의 문자에 숫자 이외의 내용이 포함되어 있는지 확인하는 오류 검사 구성 요소가 포함됩니다. 그렇게하면 아무것도 반환되지 않습니다.
이러한 공식적인 접근 방식이 수행하지 않는 한 가지는 동일한 셀 내에 패턴이 두 번 이상 발생할 수있는 상황을 처리하는 것입니다. 이 경우 매크로가 가장 좋은 방법입니다. 다음은 유효한 패턴을 추출하여 “결과”라는 새 워크 시트에 배치합니다.
Sub ExtractPattern() On Error Resume Next Set SourceSheet = ActiveSheet Set TargetSheet = ActiveWorkbook.Sheets("Results") If Err = 0 Then Worksheets("Results").Delete End If Worksheets.Add ActiveSheet.Name = "Results" Set TargetSheet = ActiveSheet Cells(1, 1).Value = "Found Codes" Cells(1, 1).Font.Bold = True iTargetRow = 2 SourceSheet.Select Selection.SpecialCells(xlCellTypeLastCell).Select Range(Selection, Cells(1)).Select For Each c In Selection.Cells If c.Value Like "##-#####" Then sRaw = c.Value iPos = InStr(sRaw, "-") Do While iPos > 0 If iPos < 3 Then sRaw = " " & sRaw iPos = iPos + 2 End If sTemp = Mid(sRaw, iPos - 2, 8) sRaw = Mid(sRaw, iPos + 6, Len(sRaw)) If sTemp Like "##-#####" Then TargetSheet.Cells(iTargetRow, 1) = sTemp iTargetRow = iTargetRow + 1 Else sRaw = Mid(sTemp, 4, 5) & sRaw End If iPos = InStr(sRaw, "-") Loop End If Next c End Sub
매크로는 두 곳에서 Like 함수를 사용합니다. 첫 번째 인스턴스는 패턴이 셀의 어느 곳에서나 발생하는지 확인하고 두 번째 인스턴스는 추출 된 문자가 원하는 패턴과 정확히 일치하는지 확인하는 데 사용됩니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (7348)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excelribbon-Extracting_a_Pattern_from_within_Text [텍스트 내에서 패턴 추출]
.