[퀴즈] 텍스트 나누기, ( 와 ) 사이는 제외하기

함수/공식
작성자
마법의손
작성일
2025-04-07 11:08
조회
206
엑셀버전 : M365

운영체제 : 윈도우11

질문 요약 : ()로 제외되는 범위 설정된 텍스트 나누기

 

이번 퀴즈는 UDF라야 풀릴 것 같아요...물론 수식으로도 어떻게든 할 수는 있겠지만요..

전 UDF로 구현했습니다.

 

 

신고
스크랩
공유
전체 12

  • 2025-04-08 00:55
    채택된 답변

    @마법의손 님 =TEXTSPLIT(CONCAT(REGEXREPLACE(A2:A9,"(,,)|([^,]*\((?:[^()]*|(?R))*\))|,","${1:+_ _:_$2}")&"|"),"_","|",1,,"")


    • 2025-04-08 11:28

      @수미수 님  

      터터턱이....빠졌습니다..

      와...엄청 멋져요...!! 정규식 공부 더 많이 파봐야겠습니다...

      이래서 [퀴즈] 문제를 만드는 보람이 생깁니다.. b^^)

       

      보물로 간직하기
       
      =TEXTSPLIT(CONCAT(REGEXREPLACE(A2:A9,"(,,)|([^,]*\((?:[^()]*|(?R))*\))|,","${1:+_ _:_$2}")&"|"),"_","|",1,,"")

       


    • 2025-04-08 16:31

      @수미수 님 우와우.. 정규식 정말 엄청납니다!!ㄷㄷ


    • 2025-04-08 09:05

      @수미수 님 분명 함수이긴한데ㅋㅋ  그것도 함수 3개........🤣
      정규식부터 공부해봐야겠습니다ㅎ  너무 멋집니다!


  • 2025-04-07 19:26

    @마법의손

    =LET(a,MID(A2,SEQUENCE(LEN(A2)),1),
    b,SCAN(0,a,LAMBDA(init,cur,IF(cur="(",init+1,IF(cur=")",init-1,init)))),
    c,VSTACK(0,b),
    d,DROP(IF((c=0)*(b=1),"!!",IF((c=1)*(b=0),"!!","")),-1),
    e,TOCOL(TEXTSPLIT(SUBSTITUTE(TEXTJOIN("",,HSTACK(a,d)),"(!!","!!("),"!!")),
    f,FILTER(e,e<>""),
    TEXTSPLIT(TEXTJOIN("",,BYROW(f,LAMBDA(r,IF(LEFT(r)<>"(",SUBSTITUTE(r,",","!!"),r)))),"!!")
    )

    오래 걸렸네요 ㅜ 함수로 풀어봤습니다


    • 2025-04-08 12:06

      @더블유에이 님 최적화시켜봤습니다....더블유에이 님의 수식으로 하니 크게 어렵지 않네요..b^^)

      =LET(a,MID(A2,SEQUENCE(LEN(A2)),1),
      b,SCAN(0,a,LAMBDA(init,cur,IF(cur="(",init+1,IF(cur=")",init-1,init)))),
      TEXTSPLIT(CONCAT(IF((b=0)*(a=","),"!!",a)),"!!"))


      • 2025-04-08 16:30

        @마법의손 님 와우 수식이 이렇게 간결해질수도 있군요 ㅎㅎ 대단하십니다!1!! 엄지척척


    • 2025-04-07 22:26

      @더블유에이 님  

      대단하시네요.b^^)

      저도 수식으로 도전해봐야겠습니다

       


    • 2025-04-07 19:52

      @더블유에이 님 오우  함수로도 되는거였군요 🤣
      보는것만으로도 쥐가 나려고 합니다만 ㅎ   너무 멋집니다!


  • 2025-04-07 17:21

    @마법의손

    Function SmartSplit(inputStr As String) As Variant
        Dim result() As String
        Dim temp As String
        Dim depth As Integer
        Dim i As Integer
        Dim c As String
        Dim idx As Integer
        idx = 0
        ReDim result(0)
     
        For i = 1 To Len(inputStr)
            c = Mid(inputStr, i, 1)
            If c = "(" Then
                depth = depth + 1
                temp = temp & c
            ElseIf c = ")" Then
                depth = depth - 1
                temp = temp & c
            ElseIf c = "," And depth = 0 Then
                result(idx) = Trim(temp)
                temp = ""
                idx = idx + 1
                ReDim Preserve result(idx)
            Else
                temp = temp & c
            End If
        Next i
        result(idx) = Trim(temp)
        SmartSplit = result
    End Function

    👉 사용법:

    1. VBA 편집기 (Alt + F11) 열기

    2. 삽입 > 모듈 클릭

    3. 위 코드 붙여넣기

    4. 엑셀 셀에 아래처럼 사용:

    =INDEX(SmartSplit($A2), COLUMN()-2)
    • COLUMN()-2는 C열부터 시작하기 위해.

    • 이 수식을 C2에 넣고 오른쪽으로 드래그, 아래로 복사.

    첨부파일 : SPLITnest.xlsm


  • 2025-04-07 11:15

    @마법의손 님 보기엔 쉬워 보이는데 참.. 고수님들의 세계란


  • 2025-04-10 17:56
    Function SplitNest(txt As String, _
        Optional delim As String = ",", Optional openB As String = "(", Optional closeB As String = ")") As Variant
     
        Dim r() As String, t As String, i As Long, d As Long, c As String
        ReDim r(0)
     
        For i = 1 To Len(txt)
            c = Mid(txt, i, 1)
            If c = openB Then d = d + 1 Else If c = closeB Then d = d - 1
            If c = delim And d = 0 Then
                r(UBound(r)) = Trim(t): t = "": ReDim Preserve r(UBound(r) + 1)
            Else
                t = t & c
            End If
        Next i
     
        If Len(t) > 0 Then r(UBound(r)) = Trim(t)
        SplitNest = r
    End Function

    첨부파일 : SPLITnest.xlsm


전체 18,476
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (313)
오빠두엑셀 | 2022.02.03 | 추천 573 | 조회 600598
오빠두엑셀 2022.02.03 573 600598
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 310 | 조회 34955
오빠두엑셀 2021.10.28 310 34955
78431 VBA
New IF 조건문 기초 질문 드립니다. 첨부파일
neoburi | 00:46 | 추천 0 | 조회 7
neoburi 00:46 - 7
78428 기능/도구
New 보이는 범위의 셀로만 붙여넣기하는 법 첨부파일 (2)
유도연 | 2025.04.29 | 추천 0 | 조회 58
유도연 2025.04.29 - 58
78424 함수/공식
New 생년월일 6자리로 나이 계산 어떻게 하나요? (7)
망나 | 2025.04.29 | 추천 0 | 조회 66
망나 2025.04.29 - 66
78421 함수/공식
New INDEX + MATCH 함수 문의 (2)
박상선 | 2025.04.29 | 추천 0 | 조회 66
박상선 2025.04.29 - 66
78420 함수/공식
New 여러시트 중에 같은내용을 찾기 엑셀파일첨부파일 (1)
박석철 | 2025.04.29 | 추천 0 | 조회 48
박석철 2025.04.29 - 48
78419 문서서식
New 크기가 다른 셀에서의 필터 걸기 부탁드립니다 ! 첨부파일 (3) 답변완료
Aberdeen | 2025.04.29 | 추천 0 | 조회 39
Aberdeen 2025.04.29 - 39
78418 함수/공식
New [퀴즈] 텍스트 압축/변형하기 엑셀파일첨부파일 (7)
마법의손 | 2025.04.29 | 추천 0 | 조회 90
마법의손 2025.04.29 - 90
78416 VBA
New 시트보호된 상태에서 매크로 작동시 Range 클래스 중 Insert 메서드에 오류가 있습니다. 첨부파일 (1)
jihye**** | 2025.04.29 | 추천 0 | 조회 38
jihye**** 2025.04.29 - 38
78414 파워쿼리/피벗
New 다른 엑셀 파일에서 필요한 값만 불러오는 방법 첨부파일
망그러진나나 | 2025.04.29 | 추천 0 | 조회 48
망그러진나나 2025.04.29 - 48
78413 함수/공식
New 경과주 구하는 수식 문의 (1)
엑셀렙업용 | 2025.04.29 | 추천 0 | 조회 47
엑셀렙업용 2025.04.29 - 47
78411 문서서식
New 숫자 문자인식 숫자변환하는 법 엑셀파일 (5)
패션피플 | 2025.04.29 | 추천 0 | 조회 63
패션피플 2025.04.29 - 63
78410 VBA
New [매크로관련] 특정셀 자동증가하며, 연속출력할수 있을까요? 엑셀파일 (5) 답변완료
박병호 | 2025.04.29 | 추천 0 | 조회 73
박병호 2025.04.29 - 73
78408 문서서식
New 숫자 서식 변경하기 첨부파일 (3) 답변완료
에그셀 | 2025.04.29 | 추천 0 | 조회 46
에그셀 2025.04.29 - 46
78407 기능/도구
New 원드라이브 MICROSOFT 365 사용중 공동작업시 필터 첨부파일 (1)
록키발보아 | 2025.04.29 | 추천 0 | 조회 47
록키발보아 2025.04.29 - 47
78402 함수/공식
New 괄호안의 시간:분 데이터를 분으로 합산하는 방법 질문드립니다. 엑셀파일첨부파일 (1) 답변완료
nams | 2025.04.28 | 추천 0 | 조회 63
nams 2025.04.28 - 63
78400 함수/공식
New 2차배열에서 countif 첨부파일 (8)
라면이가좋아 | 2025.04.28 | 추천 0 | 조회 80
라면이가좋아 2025.04.28 - 80
78399 함수/공식
New 한달의 마지막주 스케쥴 작성시 전주까지의 휴무 누적 합계 구하는 방법이 궁금합니다. 엑셀파일첨부파일 (3)
쭈누 바라기 | 2025.04.28 | 추천 0 | 조회 49
쭈누 바라기 2025.04.28 - 49
78398 VBA
New VBA 매크로 여러 엑셀 파일에서 사용 (1)
shhhha | 2025.04.28 | 추천 0 | 조회 78
shhhha 2025.04.28 - 78
78396 함수/공식
New 직원별로 근태 합계를 확인하고 싶어요 엑셀파일 (12) 답변완료
배진희 | 2025.04.28 | 추천 0 | 조회 108
배진희 2025.04.28 - 108
78395 함수/공식
New 특정 단어를 포함한 행 골라내는 방법에 대해 문의드립니다. (3) 답변완료
mmm1010 | 2025.04.28 | 추천 0 | 조회 70
mmm1010 2025.04.28 - 70
78392 함수/공식
New 도와주세요... ( 특정값에 해당하는 반 번호 찾아 목록만들기) 엑셀파일첨부파일 (6)
김동생 | 2025.04.28 | 추천 0 | 조회 74
김동생 2025.04.28 - 74
78389 기능/도구
New 오빠두LIVE 196회 - 엑셀 프로젝트 관리 _ 일,주 바꾸는법 엑셀파일 (1)
일류 | 2025.04.28 | 추천 0 | 조회 64
일류 2025.04.28 - 64
78387 함수/공식
New 엑셀 관련 질문입니다. SUM과 IFERROR 입니다 ㅠ (6)
| 2025.04.27 | 추천 0 | 조회 109
2025.04.27 - 109
78382
New Excel 추세선 이상 엑셀파일 (2)
eagle | 2025.04.27 | 추천 0 | 조회 85
eagle 2025.04.27 - 85
78381 함수/공식
New 같은 이름 N 번째 데이터 엑셀파일첨부파일 (14) 답변완료
박정호 | 2025.04.27 | 추천 1 | 조회 120
박정호 2025.04.27 1 120
78380 함수/공식
New On Error Resume Next 문구를 삽입하는 위치는? (2) 답변완료
GEEM | 2025.04.27 | 추천 0 | 조회 90
GEEM 2025.04.27 - 90
78376 함수/공식
New 지역별 증감금액 확인 엑셀파일 (3) 답변완료
충무공 | 2025.04.26 | 추천 0 | 조회 78
충무공 2025.04.26 - 78
78374 함수/공식
New index를 활용한 조건에 맞는 금액을 찾는 방법 엑셀파일첨부파일 (4)
뚜둥뚜둥 | 2025.04.26 | 추천 0 | 조회 100
뚜둥뚜둥 2025.04.26 - 100
78372 기능/도구
New 표서식 차이 문의 첨부파일 (2) 답변완료
hossang**** | 2025.04.25 | 추천 0 | 조회 68
hossang**** 2025.04.25 - 68
78370 피벗테이블
New (피벗테이블) 2024년 2025년 판매 TOP10 비교데이터 첨부파일 (13)
패션피플 | 2025.04.25 | 추천 0 | 조회 101
패션피플 2025.04.25 - 101