|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(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
|
|