B |
C |
D |
E |
F | |
2 |
a |
1 |
|
a |
1 |
3 |
c |
3 |
|
c |
2 |
4 |
f |
5 |
|
f |
3 |
5 |
a |
1 |
|
a |
1 |
6 |
b |
2 |
|
b |
4 |
7 |
d |
4 |
|
d |
5 |
8 |
b |
2 |
|
b |
4 |
(사전순으로 일련번호를 매기고자 할 경우 : 표 B2:C8)
C2 =SUMPRODUCT(N(B$2:B$8<=B2),N(1/COUNTIF(B$2:B$8,B$2:B$8)))
; C3 잡아 아래로 데이타 수 만큼 복사하면 작업 끝.
이 수식은 해당 행의 문자열 보다 작은 문자열이 있는 행의 수의 역수를 더함으로써, 오름차순의 일련번호를 발생하게 합니다.
(나오는대로 일련번호를 매기고자 할 경우 : 표 E2:F8)
F2 =1
F3 =IF(COUNTIF(E$2:E2,E3)=0,MAX(F$2:F2)+1,VLOOKUP(E3,E$2:E2,2,FALSE))
; F3 잡아 아래로 데이타 수 만큼 복사하면 작업 끝.
이 수식은 해당 행의 문자열이 이제까지 나왔는지를 COUNTIF로 검사합니다. 만약 새로 등장한 문자열이라면 이제까지 카운터의 최대치(MAX)+1을 부여합니다. 그렇지 않고 예전 나왔던 문자열이라면 그걸 VLOOKUP으로 찾아 예전의 카운터를 부여합니다.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
연장근로 시간 (시간 단위) (0) | 2008.11.13 |
---|---|
지각표 5분까지 1,000원, 상한 있음 (0) | 2008.11.13 |
코드 순차에 맞춰 형태 데이타 집계 (SMALL, SUMPRODUCT) (0) | 2008.11.13 |
주소 정렬 (번지순) (0) | 2008.11.13 |
행렬 곱하기 (0) | 2008.11.13 |