예전에 올린 로직을 다듬음. 아마도 기준년도가 2020년 쯤 되면 ABS를 활용, 차이가 10년 이내면 2000, 아니면 1900...식으로 고쳐야 할지도 모름. 일단 아래는 설명을 자세히 한 버젼.
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=jckR23W6w0F415sdgGEIpVUjrnmKk034
|
B |
C |
D |
E |
F |
G |
H |
I |
J |
2 |
2008년 05월 02일 |
|
|
|
0502 |
|
|
|
|
3 |
주민번호 |
보험미가입자 |
보험가입가능한자 |
|
2008 |
|
|
|
|
4 |
930101-0000000 |
|
○ |
|
1993 |
0 |
15 |
|
○ |
5 |
930601-0000000 |
○ |
|
|
1993 |
1 |
14 |
○ |
|
6 |
930615-0000000 |
○ |
|
|
1993 |
1 |
14 |
○ |
|
7 |
|
|
|
|
|
|
|
|
|
8 |
2008년 06월 02일 |
|
|
|
|
|
|
|
|
9 |
주민번호 |
보험미가입자 |
보험가입가능한자 |
|
|
|
|
|
|
10 |
930101-0000000 |
|
○ |
|
|
|
|
|
|
11 |
930601-0000000 |
|
○ |
|
|
|
|
|
|
12 |
930615-0000000 |
○ |
|
C4 =IF(YEAR($B$2)-(VALUE(LEFT(B4,2))+IF(LEFT(B4,1)>"0",1900,2000))-N(MID(B4,3,4)>TEXT(MONTH($B$2),"00")&TEXT(DAY($B$2),"00"))<15,"○","")
D4 =IF(YEAR($B$2)-(VALUE(LEFT(B4,2))+IF(LEFT(B4,1)>"0",1900,2000))-N(MID(B4,3,4)>TEXT(MONTH($B$2),"00")&TEXT(DAY($B$2),"00"))<15,"","○") ; C4:D4 잡아 아래로 C6:D6까지 복사.
C4 수식의 구조
F2 =TEXT(MONTH($B$2),"00")&TEXT(DAY($B$2),"00") ; 월일을 mmdd 형태로 만듬
F3 =YEAR(B2) ; 기준일의 연도
F4 =VALUE(LEFT(B4,2))+IF(LEFT(B4,1)>"0",1900,2000) ; 주민번호가 0으로 시작하면 2000, 아니면 1900
G4 =N(MID(B4,3,4)>F$2) ; 기준일이 생일을 지났으면 0, 아직 지나지 않았으면 1
H4 =F$3-F4-G4 ; 만 나이를 계산
I4 =IF(H4<15,"○","")
J4 =IF(H4<15,"","○")
I4에 F2:F4, G4, H4를 밀어넣고 정리하면 C4, J4를 뼈대로 같은 작업을 하면 D4가 됩니다.
'논리 > 엑셀 프로그래밍' 카테고리의 다른 글
한글 영어 분리 (0) | 2008.11.14 |
---|---|
외부화일 참조 INDIRECT (0) | 2008.11.14 |
검색결과를 5개/행 랜덤 정렬 (0) | 2008.11.14 |
근무 명령 알고리즘 (사수/부사수) (0) | 2008.11.14 |
2차원 배열 역추적, 데이타 재정렬 (0) | 2008.11.14 |