정말 넘 어렵습니다
이런 대상이 10,000명정도 되는데 세대를 구분하려고 합니다
세대구분란에 본인만 있을때는 단독이라고 표기
세대구분란에 본인과 처가 밑에 있을때는 부부라고 표기
세대구분란에 본인과 자가 있을 때는 2세대로 표기
세대구분란에 본인과 손이 있을 때는 3세대로 표기
세대구분란에 본인과 증손이 있을 때는 4세대로 표기
세대구분란에 본인과 증손녀가 있을 때는 5세대로 표기
단 본인란 옆에 있는 세대구분란에 단독, 2세대,3세대,4세대, 5세대로 표기하면 됩니다
어떻게 하면 될까요
답변자님,
정보를 공유해 주세요.
님이 원하시는 답변인지는 모르겠는데여~~ 먼저 아래와 같은표를 만듭니다.
표를 만든 위치가 O1:P6에 설정했을때 함수 입니다.
M3셀에 입력하신후 체우기 해보세요~~
(본인을 기준으로 끌어온 부분이라 관계 최종 마지막셀에 본인을 임으로 넣어주셔야
마지막 셀까지 계산이 됩니다.)
본인 | 단독 |
처 | 부부 |
자 | 2세대 |
손 | 3세대 |
증손 | 4세대 |
증손녀 | 5세대 |
=IF(C3="","",VLOOKUP(IF(ISERROR(INDEX(D4:D12,MATCH("본인",D4:D9,0)-1)),"본인",INDEX(D4:D12,MATCH("본인",D4:D9,0)-1)),$O$1:$P$7,2,0))
나이많으신 | 관계 | 세대구분 |
1김말자 | 본인 | 단독 |
소죽자 | 본인 | 부부 |
처 | ||
임정자 | 본인 | 단독 |
박정자 | 본인 | 단독 |
최정자 | 본인 | 4세대 |
증손 | ||
홍말자 | 본인 | 5세대 |
처 | ||
자 | ||
증손녀 | ||
사미자 | 본인 | 단독 |
오귀자 | 본인 | 4세대 |
처 | ||
증손 | ||
본인 |
2010.07.20.
-
채택
질문자가 채택한 답변입니다.
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
내용이 복잡해서 excel 함수로는 안되구요.
엑셀의 VBA라는 걸 사용해서 프로그래밍 해야 합니다.
다음 사항을 잘 따라해 보세요.
메뉴단추 목록에서 마우스 오른쪽키를 누르면 나오는 메뉴에서
1. 컨트롤 도구 상자 체크확인 (안 되었을 경우 클릭)
2. 컨트롤 도구 상자 단추에서 command 버튼 클릭
3. 적당한 위치에서 클릭 => command 단추가 생김 (되도록이면 화면을 가리지 않게 하세요)
4. 새로 생기 command 단추 더블 클릭하면 비쥬얼 베이직 화면이 뜹니다.
5. Ctrl+A 를 눌러 모두 선택 삭제 후
6. 아래 소스를 복사해 넣으신 후
7. 저장하시고
8. command 버튼 클릭하면 됩니다.
'===============================================================================
' 소스
' 해당화면 기준으로 작성되었음을 알려드립니다.
' (cjsdltlq님의 네이버 지식 질문)
Private Sub CommandButton1_Click()
Dim crnt_row As Long ' 작업중인 열(줄)번호
Dim crnt_count As Integer ' 성명별 자료수
Dim save_name As String ' 성명 변수
Dim crnt_range As String ' 범위 변수
Dim sed_cnt As Integer ' 세번 번호 변수
Dim p_rela As String ' 세대구분 출력 변수 (a : 단독세대, b : 부부세대, c : 기타)
Dim num_rela As Integer ' 세대구분 출력 변수
Dim temp As Integer ' 임시변수
Dim i, j As Integer ' crnt_count 를 세기 위한 변수
crnt_row = 3
Range("M3:N20000").Clear ' M3:N60000 까지 지움
Do While 1
If Len(Cells(crnt_row, 4)) = 0 Then ' D행(관계)란이 공백이면 반복문 빠져 나옴
Exit Do
End If
crnt_name = Cells(crnt_row, 3)
p_rela = ""
num_rela = 0
temp = 0
For i = 0 To 100 ' 관계 밑에 공백의 셀 갯수 구하기
If Len(Cells(crnt_row + i + 1, 3)) > 0 Or Len(Cells(crnt_row + i + 1, 4)) = 0 Then
Exit For
End If
Next
If i = 0 Then ' 공백 셀 갯수가 없으면 "단독세대"
p_rela = "단독"
Else
If Cells(crnt_row + 1, 4) = "처" And i = 1 Then ' 공백수가 1이고 바로 밑이 "처"이면 "부부세대"
p_rela = "부부"
Else ' 아니면 "기타"
For j = crnt_row + 1 To crnt_row + i + 1
If Cells(j, 4) = "증손녀" And num_rela < 5 Then
num_rela = 5
End If
If Cells(j, 4) = "증손" And num_rela < 4 Then
num_rela = 4
End If
If Cells(j, 4) = "손" And num_rela < 3 Then
num_rela = 3
End If
If Cells(j, 4) = "자" And num_rela < 2 Then
num_rela = 2
End If
Next
p_rela = num_rela & "세대"
End If
End If
Cells(crnt_row, 13) = p_rela
crnt_row = crnt_row + 1 + i ' 진행열 증가
Loop
End Sub
'===============================================================================
2010.07.20.
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
어렵네요.. 어려워.. ^^;
IF문안에 IF문을 다시 쓰려니 오류가 뻥뻥 터져요~ ㅋ
그래서 그냥 단순하게.. 나눳습니다.
먼저 해주실 일은 D열의 마지막에 "본인" 을 입력하고 아래의 셀을 순서대로 입력하시고
쭉 끝까지 끌어내리세요~
N3 셀값 :
=IF(COUNTIF(INDIRECT(ADDRESS(ROW(),4)):INDIRECT(ADDRESS(ROW()+MATCH("본인",INDIRECT(ADDRESS(ROW()+1,4)):INDIRECT(ADDRESS(65536,3)),0)-1,4)),"증손녀")>0,TRUE,FALSE)
O3 셀값 :
=IF(COUNTIF(INDIRECT(ADDRESS(ROW(),4)):INDIRECT(ADDRESS(ROW()+MATCH("본인",INDIRECT(ADDRESS(ROW()+1,4)):INDIRECT(ADDRESS(65536,3)),0)-1,4)),"증손")>0,TRUE,FALSE)
P3 셀값 :
=IF(COUNTIF(INDIRECT(ADDRESS(ROW(),4)):INDIRECT(ADDRESS(ROW()+MATCH("본인",INDIRECT(ADDRESS(ROW()+1,4)):INDIRECT(ADDRESS(65536,3)),0)-1,4)),"손")>0,TRUE,FALSE)
Q3 셀값 :
=IF(COUNTIF(INDIRECT(ADDRESS(ROW(),4)):INDIRECT(ADDRESS(ROW()+MATCH("본인",INDIRECT(ADDRESS(ROW()+1,4)):INDIRECT(ADDRESS(65536,3)),0)-1,4)),"자")>0,TRUE,FALSE)
R3 셀값 :
=IF(COUNTIF(INDIRECT(ADDRESS(ROW(),4)):INDIRECT(ADDRESS(ROW()+MATCH("본인",INDIRECT(ADDRESS(ROW()+1,4)):INDIRECT(ADDRESS(65536,3)),0)-1,4)),"처")>0,TRUE,FALSE)
M3 셀값 :
=IF(D3<>"본인","",IF(N2,"5세대",IF(O2,"4세대",IF(P2,"3세대",IF(Q2,"2세대",IF(R2,"부부","단독"))))))
2010.07.20.
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.