2016-11-18 5 views
0

이것은 여기있는 모든 컴퓨터에 쉬운 방법 일 것입니다! EXCEL 텍스트 상자에 문자열을 추출하고 싶습니다. 데이터 세트는 다소 엉망입니다. 공간, 문자 및 기타 텍스트가 필요하지 않습니다. 예를 들어 :데이터 스크럽하기 엑셀

나는 "ABC ABCABC12345D1"

       "ABC,ABCABC12345D1" 
          "KOhn!ABCABC12345D1" 
          "ABCABC12345D2 ABCABC12345D1" 
          "ABCABC12345D1ABCABC12345D1" 
          "MCDONALDABCABC12345D1" 

에서 ABC12345D1를 취할 필요하지만 그냥 밖으로 추출해야 식별자 중 하나입니다. 드래그하여 나머지 열로 끌어 당기는 수식이 있으면 좋겠습니다.

그래서 ABCABC12345D1는

이루어지는 _ _ _ 처음 세 문자는 ID를이다

_ _ _ _ _ 번째 부분은 상기 위치 태그를이다

_ _ 상기 적어도 과거가 그것이 켜져 있는지 또는 꺼져 있든간에 (나는 그 커트를 추출 할 수 있다면 살아갈 수 있습니다.)

이제 8 자 또는 10자를 올바르게 가져 가고 모든 공간을 빼내려고했지만 어떻게 이 데이터를 가져 오려면

답변

0

정규식?

Function Regex(Cell) 
    Dim RE As Object 

    Set RE = CreateObject("vbscript.regexp") 

    RE.Pattern = "(\w{6}\d{5}\w\d)" 
    RE.Global = True 
    RE.IgnoreCase = True 
    Set Matches = RE.Execute(Cell) 

    For Each res In Matches 
     Regex = Regex & "," & res 
    Next res 
    Regex = Mid(Regex, 2) 
End Function 

ALT + F11이 포함 된 VBA 편집기를 엽니 다.
삽입 -> 모듈 위 코드를 복사하여 모듈 창에 붙여 넣습니다. VBA 편집기를 닫습니다.

Excel 시트에이 기능을 활성화하려면 =Regex(A1)을 입력하십시오.

enter image description here

+0

감사합니다! 이 작업을 수행하는 더 쉬운 방법이 있습니까? 나는 이것이 VBA라고 가정하고 있습니까? –

+0

예 VBA입니다. VBA를 감정적으로 다루지 않았 음을 알지 못했습니다. 미안 해요 ... UDF로 만들 수 있습니까? 그렇게하면 공식으로 사용할 수 있습니다. 텍스트가 A1에 있다고하면 B1에서'REGEX ("A1")'을 쓸 수 있어야하며 원하는 부분을 반환합니다. 너 괜찮 니? – Andreas

+0

당신은 일종의 정규식을 사용해야합니다. (아마도) ABCABC가 아닙니다. 정규식을 사용하면 무엇을 찾을 지 선언하고, 여섯 자리, 다섯 자리, 한 문자 및 한 자리의 순서로 그 정규 표현식을 작성했습니다. 그것이 어떤 문자 또는 숫자의 일치 여부와 상관없이 – Andreas