논리/엑셀 프로그래밍

문자열 조작 - 최후 빈칸 찾기 / 영어-한글 분리

섬그늘 2009. 1. 19. 17:50

문자열 길이에 따른 가변이 아닌지라 썩 마음에 드는 방식은 아니지만, 배열수식(편리하지만 데이타가 많을 경우 속도 문제가 생김)을 쓰지 않고 해결하려 몸부림 친 결과입니다.

 

 

A

B

C

D

E

1

눈이 부시네 저기

9

7

눈이 부시네

저기

2

I have a dream

14

9

I have a

dream

3

빨간 꽃 파란 꽃

9

8

빨간 꽃 파란

4

 

 

 

 

 

5

If I were 내가 만일

15

10

If I were

내가 만일

6

When a man 남자가

14

11

When a man

남자가

7

Power of 사랑의 힘

14

9

Power of

사랑의 힘

 

B1 =LEN(A1)
C1 =SUMPRODUCT((MID(A1,ROW($1:$254),1)=" ")*ISERROR(FIND(" ",A1,ROW($2:$255)))*ROW($1:$254))
D1 =LEFT(A1,C1-1)
E1 =RIGHT(A1,B1-C1)


C5 =SUMPRODUCT((MID(A5,ROW($2:$254),1)=" ")*(MID(A5,ROW($3:$255),1)>="ㄱ ")*(MID(A5,ROW($1:$253),1)<="Z ")*ROW($2:$254))

 

1~3행은 마지막 빈칸 이후 문자열을 분리하기,

5~7행은 영어-한글을 분리하기입니다. (B5, D5, E5는 B1, D1, E1을 복사하세요)

 

단, 빈칸을 기준으로 찾는 기법이므로, 빈칸이 없는 데이타라면 조금 더 복잡한 방식을 강구해야 할 것이며 더 나아가 n번째 빈칸을 기준으로 분리하려면 (그걸 찾아내는 함수가 없는지라) VBA를 동원해야 할 것입니다.

참고로 수식 중 255는 엑셀2003 기준입니다. 2007버전에서는 255*255=65,025까지 지원된다고 하는군요.