문자 관련 VBA 문의 드려요

VBA
작성자
정상교
작성일
2022-05-12 16:03
조회
43
엑셀버전 : 엑셀2016

운영체제 : 윈도우10

VBA를 써서 문자를 나누려고 하는데요

INSTR, LEFT, RIGHT, MID 별거 다 써봤는데...도저히 머리가 안돌아가요

"/"가 없는 것들은 그냥 출력되고

"/"가 포함된것들은 23, 24 이런식으로 나누고 싶거든요

붉은색은 나눠져야되는것이고, 푸른색은 공통으로 들어가면되거든요

 

원본

32451-5100

51423/24-A200

51423/24-A300(2)

 

결과물

32451-5100

51423-A200

54124-A200

51423-A300(2)

54124-A300(2)

 

 

이런식으로 출력되게끔 하고 싶습니다. 도와주세요.

오늘 하루종일 하다가 안되서 문의드려요

감사합니다

 

전체 5

  • 2022-05-12 17:06
    채택된 답변

    먼저 split으로 '-'를 기준으로 뽑아 내시고,

    첫번째 항목에 '/'가 있으면 다시 쪼개기를 해서 2개에 첫번째 '-'가 있었던 뒷 부분을 연결하면 될 듯 합니다.

    Function SplitMulti(argString As String)
        Dim subStr1, subStr2
        Dim r As Long, maxLen As Long, maxStr As String, sResult As String
        
        If argString = vbNullString Then SplitMulti = vbNullString: Exit Function
            
        subStr1 = Split(argString, "-")
        If InStr(1, subStr1(0), "/") Then
            subStr2 = Split(subStr1(0), "/")
            For r = LBound(subStr2) To UBound(subStr2)
                maxLen = Application.Max(maxLen, Len(subStr2(r)))
                If Len(subStr2(r)) = maxLen Then maxStr = subStr2(r)
            Next
            
            For r = LBound(subStr2) To UBound(subStr2)
                sResult = sResult & Left(maxStr, maxLen - Len(subStr2(r))) & subStr2(r) & "-" & subStr1(1) & vbNewLine
            Next
            sResult = Left(sResult, Len(sResult) - 1)
        
        Else
            sResult = Join(subStr1, "-")
            
        End If
        
        SplitMulti = sResult
    
    End Function

     


    • 2022-05-12 19:06

      @원조백수 님 Join이 배열을 합치는 것도 가능했네요 좋은 정보 감사합니다


  • 2022-05-12 17:08

    혹시나,,, 샘플입니다.

    첨부파일 : 멀티쪼개기.xlsm


    • 2022-05-12 17:21

      @원조백수 님 백수님 정말 감사합니다.

      테스트 했는데 잘 됩니다. 한가지 수정만 가능할까요?

      나뉘어진 텍스트들이 한셀에 들어가있는데

      각각의 셀에 따로 들어가게끔 안될까요?! ^^;

      부탁드립니다~


      • 2022-05-12 17:56

        @정상교 님 그냥 함수 하나를 만들어 드렸는데, 프로시저로 바꾸어서

        여러 범위를 지정하여 For,,, Next로 순환하면서 결과를 누적하도록 하고 다시 쪼개서 쓰면 됩니다.

        아래 코드를 기존 모듈에 추가해서 매크로 메뉴에서 실행하세요.
         

        Sub RangeSplitMulti()
            Dim vCells, vC, SourceRange As Range, i As Long
            Dim sResult As String, resultArray As Variant
            
            On Error Resume Next
            Set SourceRange = Application.InputBox("쪼개기 할 영역을 선택하세요.", "영역선택", , , , , , 8)
            On Error GoTo 0
            If SourceRange Is Nothing Then Exit Sub
            
            vCells = SourceRange.Value2
            For Each vC In vCells
                '// 결과를 계속 연결
                sResult = sResult & SplitMulti(vC) & vbNewLine
            Next vC
            
            '// 연결된 결과를 1D Array로 변환
            resultArray = Split(sResult, vbNewLine)
            '// 1D Array를 2D로 변환
            resultArray = Application.Transpose(resultArray)
            '// 2D Array를 Sheet에 쓰기
            ActiveCell.Resize(UBound(resultArray, 1), UBound(resultArray, 2)) = resultArray
        
        End Sub

         

         

         


전체 6,489
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[🏆 진짜쓰는 실무엑셀 스터디] 1기 - 우수 졸업생 및 후기, 축하합니다! (8)
오빠두엑셀 | 2022.04.30 | 추천 10 | 조회 1284
오빠두엑셀 2022.04.30 10 1284
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (65)
오빠두엑셀 | 2021.10.28 | 추천 81 | 조회 4608
오빠두엑셀 2021.10.28 81 4608
34492 VBA
New 엑셀에 드래그 앤 드롭으로 그림파일 삽입 (1)
banarchy | 15:55 | 추천 0 | 조회 4
banarchy 15:55 0 4
34477 문서서식
New 수식 복사 질문드려요.. ㅠㅠ 불금 퇴근하고싶습니다... 첨부파일 (3) 답변완료
김동률 | 2022.05.27 | 추천 0 | 조회 36
김동률 2022.05.27 0 36
34473 VBA
New 비고란에서 휴대폰번호 추출하기에 관해 문의드립니다. 첨부파일 (1)
수메리안 | 2022.05.27 | 추천 0 | 조회 31
수메리안 2022.05.27 0 31
34472 기능/도구
New 스핀단추에서 증분변경시 0.1 씩 증감할려면 어떻게 해야 할까요? (1)
033cola | 2022.05.27 | 추천 0 | 조회 26
033cola 2022.05.27 0 26
34471 함수/공식
New 조건부서식 중복 2개이상 및 2개일때 서식좀 봐주세요 궁금합니다. 첨부파일 (2)
김주현 | 2022.05.27 | 추천 0 | 조회 36
김주현 2022.05.27 0 36
34469 문서서식
New 표의 행렬 변경 첨부파일 (4)
김학준 | 2022.05.27 | 추천 0 | 조회 34
김학준 2022.05.27 0 34
34465 차트/그래프
New 간트차트에 오늘 표시하는 방법 질문드려요
yoyoy**** | 2022.05.27 | 추천 0 | 조회 29
yoyoy**** 2022.05.27 0 29
34464 VBA
New Vba로 수식을 입력하려는데 오류가 납니다. (3)
silverf**** | 2022.05.27 | 추천 0 | 조회 33
silverf**** 2022.05.27 0 33
34451 함수/공식
New 제품별 코드 중복/단독 확인함수 첨부파일 (2)
다은지후아빠 | 2022.05.27 | 추천 -1 | 조회 47
다은지후아빠 2022.05.27 -1 47
34450 VBA
New VBA를 활용한 최단거리 계산(Pathfinder,카카오맵) 첨부파일
darc**** | 2022.05.27 | 추천 0 | 조회 33
darc**** 2022.05.27 0 33
34448 함수/공식
New countif 다양한 조건으로 만들고 싶어요~ 첨부파일 (2) 답변완료
김수달 | 2022.05.27 | 추천 0 | 조회 45
김수달 2022.05.27 0 45
34444 기능/도구
New 엑셀 빠른 도구 모음에 있는 '조명'이 무슨 기능인지 아시는분 계신가요?
월마리아 | 2022.05.26 | 추천 0 | 조회 44
월마리아 2022.05.26 0 44
34440 함수/공식
New 고객 리텐션, 접속 일수에 맞춰 데이터를 합산하는 함수/VBA 문의! 첨부파일
은혼 | 2022.05.26 | 추천 0 | 조회 22
은혼 2022.05.26 0 22
34439 차트/그래프
New 체크박스 선택에 따라 값이 바뀌는 차트의 데이터레이블 표시 문제 관련 첨부파일
Qwerty | 2022.05.26 | 추천 0 | 조회 25
Qwerty 2022.05.26 0 25
34437 함수/공식
New 국가만 찾아 올련면 첨부파일 (4) 답변완료
구름나그네 | 2022.05.26 | 추천 0 | 조회 40
구름나그네 2022.05.26 0 40
34433 함수/공식
New 함수관련 질문있습니다.
섭섭섭 | 2022.05.26 | 추천 0 | 조회 31
섭섭섭 2022.05.26 0 31
34427 함수/공식
New 특정 공휴일 제외 후 2달 뒤 날짜를 구할수 있는 함수 식이 있을까요? (1)
김태우 | 2022.05.26 | 추천 0 | 조회 42
김태우 2022.05.26 0 42
34417 피벗테이블
New 피벗테이블 외부 데이터 참조 후 새로고침 할 때 자꾸 암호를 입력하라고 떠요.. (2) 답변완료
forest choi | 2022.05.26 | 추천 0 | 조회 35
forest choi 2022.05.26 0 35
34416 함수/공식
New 날짜/시간 차이를 구하려면 어떻게 하면 좋을까요? 첨부파일 (2)
aron007 | 2022.05.26 | 추천 0 | 조회 41
aron007 2022.05.26 0 41
34415 VBA
New VBA코드로 자동채우기 할때 유동범위는 어떻게 하나요 첨부파일 (2)
nam**** | 2022.05.26 | 추천 1 | 조회 40
nam**** 2022.05.26 1 40
34414 함수/공식
New 금지어 삭제하는 함수 (특정텍스트 범위내의 값을 제거 후 값 불러오기) 첨부파일 (1)
Jasper | 2022.05.26 | 추천 0 | 조회 42
Jasper 2022.05.26 0 42
34406 함수/공식
New sum 함수 오류? 첨부파일 (1)
saechang | 2022.05.25 | 추천 0 | 조회 52
saechang 2022.05.25 0 52
34405 VBA
New 중복데이터가 많은데 맨 위에 있는 행의 데이터만 남길 수 있는 방법이 있을까요? 첨부파일 (3) 답변완료
오구 | 2022.05.25 | 추천 0 | 조회 67
오구 2022.05.25 0 67
34402 VBA
vba 특정문자 입력시 현재시간 구동 관련 첨부파일 (2)
1412 | 2022.05.25 | 추천 0 | 조회 46
1412 2022.05.25 0 46
34400 함수/공식
다른 셀 값 참조시 결과값이 0으로만 나오는 현상 문의 첨부파일 (3) 답변완료
forest choi | 2022.05.25 | 추천 0 | 조회 46
forest choi 2022.05.25 0 46
34395 VBA
조건이 맞을 경우 범위데이터 이동 or 복사,삭제 문의 첨부파일 (2) 답변완료
com**** | 2022.05.25 | 추천 0 | 조회 54
com**** 2022.05.25 0 54
34392 함수/공식
다른 파일을 참조하여 합계를 구하는데, 그 참조 파일의 이름이 바뀐다면? (1)
풀빵이네 | 2022.05.25 | 추천 0 | 조회 35
풀빵이네 2022.05.25 0 35
34391 기능/도구
F1 키 누르면 나오는 도움말 끄는 단축키는 없나요? (5)
우렁각시탈 | 2022.05.25 | 추천 0 | 조회 47
우렁각시탈 2022.05.25 0 47
34390 함수/공식
셀이 빈 경우 텍스트조인이 실행되지 않도록 하는 방법 첨부파일 (6) 답변완료
forest choi | 2022.05.25 | 추천 0 | 조회 58
forest choi 2022.05.25 0 58
34387 VBA
개별공시지가조회 셀레니움 첨부파일 (5) 답변완료
나야 | 2022.05.25 | 추천 0 | 조회 46
나야 2022.05.25 0 46