엑셀관련

엑셀팁. (한글에서 초성,중성,종성을 따로 추출(분리)하는 방법. VBA. 매크로 안쓰고 순수하게 함수로만)

오빠좀데려가라 2021. 1. 2. 16:03

한글에서 초.중.종성을 따로 추출하는 방법을 검색해보면  대부분 VBA 매크로로 만들어진것만 나오게 된다.

매크로는 다른 사람들에게 공유할때 거부감을 가지게 만들고 나또한 매크로가 들어간 화일은 일단 거부감을 갖게 된다.

 

그래서 되도록이면 함수만을 이용하는 방법을 선호하는데. 때문에 함수가 너저분하고 길어지거나 구현자체를 못하거나 하는 경우가 종종있다.

 

이번 한글에서 초.중.종성을 추출하는 방법은 다행이 검색을 통한 정보를 응용하면 함수만으로 구현이 가능하다.

 

다음번에 이용할때 잊어버리지 않도록 블러깅을 해둔다.

 

 

==================

복사를 위한 텍스트

==================

1. 공백제거 함수 =SUBSTITUTE( INDIRECT( "B"&ROW()),  " ",  "")

 

2. 영문제거 함수 구현 =IF( LEN( RIGHT(C8,1)) = LENB( RIGHT(C8,1)), MID(C8,1,LEN(C8)-1), C8 )

 

3. 성/이름 분리  =IF(  LEN(D1)=2,  LEFT(D1,1)  &"" ""& RIGHT(D1,1),
                  LEFT(D1,1)  &"" ""& LEFT(D1,2) &"" ""&  RIGHT(D1,2)  )

 

4. 초성분리 =IF(  LEN(D1)=2,  INDEX(초성,  INT( (UNICODE(D1)-44032)/588)+1)&
                  INDEX(초성, INT( (UNICODE(  RIGHT(D1,1))-44032)/588)+1),

                  IF(  LEN(D1)=4,  INDEX(초성,  INT( (UNICODE(D1)-44032)/588)+1)&
                                    INDEX(초성,  INT( (UNICODE(  MID(D1,2,1))-44032)/588)+1)&
                                    INDEX(초성,  INT( (UNICODE(  MID(D1,3,1))-44032)/588)+1)&
                                    INDEX(초성,  INT( (UNICODE(   RIGHT(D1,1))-44032)/588)+1),

                                    INDEX(초성,  INT( (UNICODE(D1)-44032)/588)+1)&
                                    INDEX(초성, INT( (UNICODE(  MID(D1,2,1))-44032)/588)+1)&
                                    INDEX(초성, INT( (UNICODE(  RIGHT(D1,1))-44032)/588)+1)
                    )
 )

 

5. 결과 ="성명: "&D1 &"( " &E1 &" " &F1 &" )"

 

초성분리 샘플.xlsx
0.02MB