반응형

안녕하세요! gbgg입니다. 능력 있는 직장인이 되는 법! 열한 번째 시간입니다!

그동안 기초 함수들에 대한 설명과 폼 사용하는 법, 그리고 vba를 통한 자동화까지 진행했는데요!

이번엔 이 모든 것들을 활용하여 가계부를 만들어볼 까 합니다.

자료도 첨부해두었으니 보면서 따라 하시면 쉽게 이해하실 수 있을 겁니다!

 

[Excel]자산관리용_가계부_01.xlsm
0.02MB


가계부에 들어갈 내용

  • 지출/수입 입력
  • 지출 내역
  • 수입 내역
  • 일, 월별 내역 통계
  • 신용카드 / 체크카드 / 현금
  • 자산현황 그래프 / 차트

가계부에 들어갈 내용은 위와 같습니다.


입력할 수 있는 시트지출/수입 내역을 확인할 수 있는 시트, 기본설정 시트 등으로 구분될 것이고

한눈에 알아보기 쉽게 디자인도 고려하여 진행될 것입니다.

앞선 강의에서 배웠던 요소들 대부분이 사용되므로 참조해주시고 모르는 것은

댓글 달아주시면 답변 달아드리겠습니다!


기본 디자인

가계부의 큰 디자인 틀은 두 가지가 있습니다. '달력 형태'와 '내역 형태'인데 제가 사용해 보았을 때는 상대적으로

달력 형태로 이루어진 디자인이 더 깔끔하고 한눈에 알아보기 편했습니다.

이번 포스팅에서는 이러한 달력 형태를 기준으로 vba와 함수를 함께 사용하여 만들어보겠습니다.

 

  • 35개의 달력 칸에 날짜 정보와 입/출금 내역이 표시된다.
  • 월 단위로 통계를 낸 뒤 달력 하단에 표시한다.


달력처럼 꾸미기 위해 위 그림과 같은 형식으로 구분해보겠습니다.

날짜와 수입, 지출, 그리고 수입과 지출을 가지고 통계가 필요하겠죠?

달력처럼 디자인 해 보겠습니다. 수입은 파란색, 지출은 빨간색, 통계는 검은색으로 표시합니다.

날짜는 일반 달력처럼 최대 5주간 내용이 기록되도록 하겠습니다.

 

이제 월별로 달력을 확인할 수 있도록 연월을 표시하고 연동해보겠습니다.

위와 같이 연도가 들어갈 셀과 이 들어갈 셀을 만들고 버튼 두개를 생성합니다.

버튼을 생성한 후 버튼에 기능을 부여해봅시다. (지난 포스팅 참조)

Sheets("Sheet1").Range("D2") = Sheets("Sheet1").Range("D2").Value + 1

버튼을 누르면 숫자가 올라가도록 구현해 보았습니다.

왼쪽 버튼 '◀'은 -1이 되어야 하고 오른쪽 버튼 '▶'은 +1이 되어야겠죠?

그리고 날짜가 12월이 넘어가면 연도도 증가해야 합니다.

이 두 조건을 정리해봅시다.

  • 값이 12인 상태에서 +1을 하면 값을 1로 바꾸고 연도 부분에 +1을 해준다.
  • 값이 1인 상태에서 -1을 하면 값을 12로 바꾸고 연도 부분에 -1을 해준다.

이 두 개를 한번 구현해보겠습니다.

 

단추 1 소스코드(<-)

Sub 단추1_Click()

If Sheets("Sheet1").Range("D2").Value = 1 Then
Sheets("Sheet1").Range("D2") = 12
Sheets("Sheet1").Range("B2") = Sheets("Sheet1").Range("B2") - 1

Else
Sheets("Sheet1").Range("D2") = Sheets("Sheet1").Range("D2").Value - 1

End If

End Sub

단추 2 소스코드(->)

Sub 단추2_Click()

If Sheets("Sheet1").Range("D2").Value = 12 Then
Sheets("Sheet1").Range("D2") = 1
Sheets("Sheet1").Range("B2") = Sheets("Sheet1").Range("B2") + 1

Else Sheets("Sheet1").Range("D2") = Sheets("Sheet1").Range("D2").Value + 1

End If

End Sub

 

결과 화면

자 이제 연도와 월을 셀에 표시했으니 이 값들을 가지고 달력에 날짜를 표시해보겠습니다.

함수 코드

=DATE(B2,D2,1) - WEEKDAY(DATE(B2,D2,1)) + 1

매 월마다 28일, 30일, 31로 불규칙적이기 때문에 함수로 계산합니다.

DATE(B2, D2,0) B2에는 연도 값이, D2에는 월 값이 들어가 있으므로

2018년 1월 29일 데이터를 입력하면 2018년 1월 데이터를 출력합니다.

 

'WEEKDAY(DATE(B2, D2,1))' WEEKDAY 함수는 해당 연월의 가장 '첫' 요일을 반환해줍니다.

해당 연월의 1일에서 이 첫 요일 값을 빼주고 +1을 해주면 됩니다.

 

자 이제 달력의 첫 일요일 값을 얻었으니 나머지는 더해주기만 하면 됩니다.

  • 첫 주는 일요일 값에서 + 1, +2, +3...
  • 둘째 주부터는 전 주 값에서 +7

첫 번째 주는 위와 같이 바로 이전 셀 값에서 +1을 해줍니다.

두 번째 주부터는 위와 같이 바로 전 주의 값에서 +7을 해줍니다.

위 그림과 같이 모두 적용해줍니다. 이제 할 일이 두 가지 남았습니다.

  • 날짜만 보이도록 셀 서식을 변경한다.
  • 해당 연월이 아닌 날은 조건부 서식을 통해 색을 바꿔준다.

셀 서식은 위와 같이 사용자 서식에서 'd'를 입력해주면 날짜 값만 받을 수 있습니다.

해당 연월이 아닌 부분의 날짜는 흐리게 표시해보겠습니다.

'조건부 서식' 기능을 클릭해줍니다.

위와 같이 서식 값에 =MONTH(B6)<>$D$2를 넣고 글씨 색은 회색으로 변경하겠습니다.

월 값이 같을 경우에만 서식 변경이 없도록 하였습니다.

셀 범위는 위와 같이 날짜가 들어있는 부분만 선택해주시면 됩니다.

 

결과


위와 같이 달력이 잘 동작되는 것을 확인할 수 있습니다.

 

수입과 지출 데이터 값은 다음 포스팅에서 데이터 시트를 만들어 INDEX 함수와 MATCH 함수를 사용하여 추출해보겠습니다. 이 부분은 재고관리 강의에서 진행했던 부분이니 쉽게 이해가 가실 것이라 생각됩니다.

마지막으로 눈에 잘 들어오도록 셀 색깔 등을 수정해주시면 됩니다.


엑셀 자동화

지난 포스팅에서 설명했던 vba와 함수 등을 사용하여 가계 부용 달력을 만들어보았는데요!

어려워 보이지만 첨부된 예제를 보시면서 천천히 따라 해 보면 금방 이해할 수 있을 거라고 생각합니다.

궁금한 점이나 추가 요청사항은 댓글로 남겨주시면 답변 달아드리겠습니다!

 

능력 있는 직장인이 되기 위해 엑셀로 전산프로그램을 만들 때까지 한번 열심히 달려봅시다!

다음 포스팅에서 뵙겠습니다!

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기