문자열 길이에 따른 가변이 아닌지라 썩 마음에 드는 방식은 아니지만, 배열수식(편리하지만 데이타가 많을 경우 속도 문제가 생김)을 쓰지 않고 해결하려 몸부림 친 결과입니다.
|
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까지 지원된다고 하는군요.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
가로 세로 위치로 데이타 가져오기 (INDEX, MATCH, V/HLOOKUP, OFFSET) (0) | 2009.01.19 |
---|---|
문자열 개수 검색 (배열 함수) (0) | 2008.12.17 |
요일별 배달 목록 생성 (0) | 2008.12.09 |
중복 VLOOKUP - 2 (0) | 2008.12.04 |
[스크랩] Re: 엑셀에서 자료를 시간순으로 정렬을 하는데 그 정렬값 사이에 빈행을 1행 삽입 (0) | 2008.12.01 |