안녕하세요? [Y사랑통신]님...
지금 하시고자 하는 일은 거꾸로 하시는 일인듯 합니다.
공사일보의 내용을 각각 시트에 뿌려 사용하시는 것보다는 각시트에 데이터를 누적시키고 VBA를 이용해서 DB의 데이터를 공사일보 시트의 [C5]셀 기준 날짜에 맞는 자료를 가져와 보여주면 됩니다.
아래는 [장비현황] 관련된 내용만 코딩한 자료입니다.
계속 누적된 데이터를 처리해야 하고 또 빠른 속도로 나타내야 하므로 SQL문을 이용해서 처리했습니다.
Option Explicit
Sub Test()
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim SQL As String
Dim TD As Date
Set DB = OpenDatabase(ThisWorkbook.FullName, 0, 0, "Excel 8.0;")
TD = Worksheets("공사일보").Range("C5")
SQL = "SELECT 장비명, 규격, SUM(IIF(날짜 < #" & TD & "#,수량,0)) AS 전일, "
SQL = SQL & "SUM(IIF(날짜 = #" & TD & "#,수량,0)) AS 금일, "
SQL = SQL & "SUM(수량) AS 누계 "
SQL = SQL & "FROM [장비현황$] "
SQL = SQL & "GROUP BY 장비명, 규격;"
Set RS = DB.OpenRecordset(SQL)
Application.ScreenUpdating = False
Worksheets("공사일보").Range("b29").CopyFromRecordset RS
Application.ScreenUpdating = True
RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing
End Sub
Sub Reset()
Worksheets("공사일보").Range("b29:g36").ClearContents
End Sub
자세한 내용은 첨부파일을 참고로...
그럼 잘 해결되시길... ^^*
=========================================================================================
첨부파일
140514_일보연습.xlsm
=========================================================================================
첫댓글 감사합니다. 그런데 잘 안되는거같아요! 5월6일 입력한다고치면 장비현황에서 06W를 입력하면 전일이 4가 나와야하고 금일에 2를 넣으면 누계가 계산되어6이 나와야하는데 그게 안나오는데...
날자입력하면 전일까지 날자가 안나오고 금일넣으면 누계합계가 계산이 안나오네요...
쿼리 부분을 아래와 같이 수정해 보세요.
SQL = "SELECT 장비명, 규격, SUM(IIF(날짜 < #" & TD & "#,수량,0)) AS 전일, "
SQL = SQL & "SUM(IIF(날짜 = #" & TD & "#,수량,0)) AS 금일, "
SQL = SQL & "전일 + 금일 AS 누계 "
SQL = SQL & "FROM [장비현황$] "
SQL = SQL & "GROUP BY 장비명, 규격;"
그리고 [공사일보] 시트의 [C5]셀의 날짜를 변경하고 Click me 버튼을 눌러 DB와의 집계 결과를 비교, 확인해보세요.
그럼 잘 해결되시길... ^^*
한가지더 질문드릴게요 일부 해결은 된거같은데 제가 잘못한건지 몰라도 일보에 오늘날자넣고 메크로 실행하면 금일은 없는거고 전일이랑 누계가 나오는데 여기에다가 금을을 치면 누계가 전일+금일이 되어야하는데 누계가 변경이 안되는데요? 그리고 이거처럼 등록된장비가 다 안나오고 선택해서 그날에 들어온장비만 입력한거만 나오게 할려고하면은 어떻게하는지좀...
금일이 오늘(2014-05-15) 인가요?
그렇다면 당연히 금일은 DB에 자료가 없으니 나오지 않겠죠...
누계는 오늘이전자료의 합에 오늘자료의 합이므로 나오겠죠...
DB에 날짜와 장비, 규격, 단위, 수량등을 입력하고 [공사일보] 시트의 [C5]셀의 날짜를 변경후 VBA를 실행해 보면 이해하시게 될겁니다.
그리고 그날 들어온 장비만 나타나게 할 수 없는것이 전일, 금일, 누계로 표시되어야 하므로 DB의 모든장비가 나타나야겠죠.
금일만 나타나게 하려면 쿼리를 수정해서 사용해 보세요.
그럼 잘 해결되시길... ^^*