나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 dew (dewdrop)

추천:  2
파일:     급여관리(2)_Ans.xlsm (55KB) 조회:  1688
제목:   [RE]여러 시트의 목록을 1개 시트에 목록별 분류 & 합계
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007): 2010

* 아래줄에 질문을 작성하세요 >>

유첨과 같이 급여관리 파일을 만들어 보려고 합니다.
1월 ~ 12월의 시트를 합산하여 볼수 있는 페이지를 만들려고 하는데
어떻게 하는건지 모르겠네요. 고수분들 도움 부탁 드립니다.
==============[리베라님 글에 대한 답변입니다]==============

첨부화일 참고하세요...

Sub 급여관리()
    Dim shtX As Worksheet
    Dim rTemp As Range, rX As Range, rFind As Range
    Dim rTg As Range
    Dim iX As Integer
    
    Dim oList As Object
    
    Set shtX = ActiveSheet
    Set rTg = shtX.Range("A2")
    
    Set oList = CreateObject("System.Collections.ArrayList")
    For iX = 1 To 12
        Set rTemp = Worksheets(iX & "월").Cells(1).CurrentRegion.Columns(1)
        Set rTemp = rTemp.Offset(1).Resize(rTemp.Rows.Count - 1)
        
        For Each rX In rTemp.Cells
            If oList.Contains(rX.Text) Then
            Else
                oList.Add rX.Text
            End If
        Next
    Next
    If oList.Count < 1 Then GoTo Exit_Sub
    
    ' 초기화 ----------------------------------------------
    Set rTemp = shtX.Cells.SpecialCells(xlCellTypeLastCell)
    If rTemp.Row > rTg.Row Then Range(rTg, rTemp).Clear
    
    rTg.Resize(oList.Count, 1) = WorksheetFunction.Transpose(oList.ToArray)
    Set oList = Nothing
    ' --------------------------------------------------------
    
    Do While rTg <> ""
        '총액 N, 공제 X, 실급여 D, 지급 B, 미지급 C
        For iX = 1 To 12
            Set rTemp = Worksheets(iX & "월").Columns(1)
            Set rFind = rTemp.Find(What:=rTg, LookAt:=xlWhole)
            If Not rFind Is Nothing Then
                rTg.Offset(0, 1) = rTg.Offset(0, 1) + rFind.Cells(1, "N")
                rTg.Offset(0, 2) = rTg.Offset(0, 2) + rFind.Cells(1, "C")
                rTg.Offset(0, 3) = rTg.Offset(0, 3) + rFind.Cells(1, "D")
                rTg.Offset(0, 4) = rTg.Offset(0, 4) + rFind.Cells(1, "B")
                rTg.Offset(0, 5) = rTg.Offset(0, 5) + rFind.Cells(1, "C")
            End If
        Next
        Set rTg = rTg.Offset(1)
    Loop
    
    ' 숫자서식 변경
    shtX.Cells(1).CurrentRegion.Offset(1, 1).NumberFormatLocal = "#,##0_);[빨강](#,##0)"
    
Exit_Sub:
End Sub
 
[불량 게시물 신고]  
리베라정말 감사드립니다11-01 (09:10)
삭제 ■신고
        
  

작성일 : 2019-10-31(12:33)
최종수정일 : 2019-10-31(12:33)
 


 ◎ 관련글

  제 목   작성자   날짜
여러 시트의 목록을 1개 시트에 목록별 분류 & 합계 리베라 2019-10-30
[RE]여러 시트의 목록을 1개 시트에 목록별 분류 & 합계 참서리 2019-11-01
[RE]여러 시트의 목록을 1개 시트에 목록별 분류 & 합계 dew 2019-10-31