NAVER

질문 엑셀 고수님들 도와주세요-내공 100드립니다 드릴수만 있다면 더드려요^^
cjsd**** 조회수 731 작성일2010.07.20


 

정말 넘 어렵습니다

이런 대상이 10,000명정도 되는데 세대를 구분하려고 합니다

세대구분란에 본인만 있을때는 단독이라고 표기

세대구분란에 본인과 처가 밑에 있을때는 부부라고 표기

세대구분란에 본인과 자가 있을 때는 2세대로 표기

세대구분란에 본인과 손이 있을 때는 3세대로 표기

세대구분란에 본인과 증손이 있을 때는 4세대로 표기

세대구분란에 본인과 증손녀가 있을 때는 5세대로 표기

단 본인란 옆에 있는 세대구분란에 단독, 2세대,3세대,4세대, 5세대로 표기하면 됩니다

어떻게 하면 될까요

 

프로필 사진

답변자님,

정보를 공유해 주세요.

3 개 답변
1번째 답변
프로필 사진
SSCD
은하신
MS엑셀 30위, MS파워포인트 21위, MS워드 25위 분야에서 활동
본인 입력 포함 정보

님이 원하시는 답변인지는 모르겠는데여~~ 먼저 아래와 같은표를 만듭니다.

표를 만든 위치가 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 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
2번째 답변
프로필 사진
s5****
영웅
본인 입력 포함 정보

내용이 복잡해서 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 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
3번째 답변
프로필 사진
sunn****
영웅
유틸리티 분야에서 활동
본인 입력 포함 정보

어렵네요.. 어려워.. ^^;

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 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.