반응형

안녕하세요! gbgg입니다. 능력 있는 직장인이 되는 법! 엑셀 자동화 강의 세 번째입니다~~!

엑셀로 일 편하게 하는 방법을 여러 차례에 걸쳐 포스팅해보고자 합니다.

 

이번 포스팅에서는 사무일을 볼 때 뭐 비품이라던지 물건들이라던지

이런 것들이 언제 입고가 되고 수량은 몇 개인지 기록할 일이 많이 생기더라고요!

그럴 때 미리 지정해둔 양식에 맞춰 클릭만으로 기록할 수 있으면 몹시 편할 겁니다!

 

오늘 구현할 기능은 다음과 같습니다!

  1. 입고된 물품 종류 선택하기
  2. 입고된 물품 이름 선택하기
  3. 버튼 입력하면 날짜, 종류, 이름, 수량을 옆 시트에 순서대로 기록하기

지난 포스팅에서 했던 버튼이나 모듈 생성 같은 부분은 짧게 넘어갈게요!

맨 밑에 지난 포스팅 링크 걸어놓겠습니다~!


기본 세팅

다음과 같은 엑셀 파일 A를 새로 만든 뒤 아래의 그림처럼 꾸밉니다.
(색상은 따라 하지 않으셔도 됩니다!)

 

자 오늘은 새로운 게 추가되었네요! 바로 콤보상자 입니다.

캄보 상자는 사용자가 직접 정보를 입력하거나 열거된 항목 중에서 항목을 선택할 수 있는

텍스트 상자와 리스트 상자의 조합입니다.

 

버튼 오른쪽에 있는 콤보 상자(양식 컨트롤)를 누르시면 쉽게 생성하실 수 있습니다!

자 이제 콤보 상자에 값을 넣어보겠습니다. I , J열에 있는 값을 참조해볼게요!

이렇게 콤보 박스 오른쪽에 대고 컨트롤 서식을 눌러주세요.

아래 그림처럼 입력 범위와 셀 연결이라는 항목이 있습니다.

간단히 설명드리자면 입력 범위는 콤보 박스에 넣을 값이고

셀 연결은 그 콤보 박스에서 값을 선택했을 때 어떤 것을 선택했는지 표시해주는 기능입니다.

아래 그림과 같이 입력 범위를 누르시고 I3부터 I7까지 드래그해서 범위 지정해보겠습니다.

셀 연결은 I8로 선택하시면 됩니다. 우선 진행한 후에 설명드릴게요!

다음과 같이 연결되셨다면 물품 이름도 똑같이 연결해 보도록 하겠습니다.

자 잘 따라오셨나요? 성공적으로 연결했다면 다음과 같이 콤보 박스를 클릭하면

오른쪽에 있는 물품 종류가 뜨게 됩니다.

한번 입고와 제품 A를 클릭해볼까요?

자 다음과 같이 셀 연결된 부분에 숫자 1과 숫자 2가 뜨는 걸 확인할 수 있습니다.

우리는 이제 콤보 박스가 어떤 값을 선택했는지 알 수 있게 되었습니다!

이제 그 번호에 맞게 값을 표시해주면 되겠죠?

인덱스(INDEX) 함수를 써보도록 하겠습니다.

  • =INDEX(찾을 범위, 찾을 값 번호)

라고 이해하시면 될 것 같습니다.

이렇게 I9셀에 함수를 써서 표시되도록 해보겠습니다.

자 이 과정을 무사히 마쳤다면 다음과 같이 무엇을 선택했는지 표시되게 됩니다.

이걸 이제 버튼 클릭하면 옆 시트에 기록될 수 있게 능력을 부여해야겠죠?

다음으로 넘어갑시다!

코드 생성

모듈을 생성합니다. (이전 포스팅에 설명이 자세히 나와있습니다.)

아래 코드를 입력해줍시다.

 

Sub 입출고()

Dim cnt As Integer

cnt = Sheets("sheet2").Range("A1").CurrentRegion.Rows.Count + 1

Sheets("sheet2").Cells(cnt, 1) = Val(Sheets("sheet2").Cells(cnt - 1, 1)) + 1
Sheets("sheet2").Cells(cnt, 2) = Sheets("sheet1").Range("c4").Value '날짜
Sheets("sheet2").Cells(cnt, 3) = Sheets("sheet1").Range("I9").Value '물품종류
Sheets("sheet2").Cells(cnt, 4) = Sheets("sheet1").Range("j9").Value '물품이름
Sheets("sheet2").Cells(cnt, 5) = Sheets("sheet1").Range("f4").Value '수량

MsgBox "입고완료"

End Sub

 

위 코드를 아래 그림과 같이 붙여 넣으시면 됩니다.

버튼에 능력 부여하기

코드를 다 입력하셨다면 다음과 같이 버튼에 능력을 부여해줍시다!

결과

자 버튼을 눌러보겠습니다! 두구두구두구

입고 완료라는 메시지가 뜨면서 성공적으로 값이 전달된 것을 확인할 수 있습니다.

자 그러면 sheet2도 확인해볼까요? sheet2로 이동해봅시다!

위에 보시다시피 sheet2에 넘버, 입출고 시간, 물품 종류, 물품이름, 수량 값이 제대로 전달된 것을

확인할 수 있습니다.

 

그렇다면 버튼을 계속 눌렀을 때 아래쪽에 기록이 되어야 하는데요.

값을 바꿔가며 버튼을 5번 정도 눌러보겠습니다.

자 이렇게 차곡차곡 데이터가 쌓이는 것을 확인하실 수 있습니다.

 

간단하게 버튼 클릭만으로 선택한 데이터가 쌓이도록 구현해보았는데요!

업무 하면서 무수히 반복되는 작업들을 이렇게 간편하게 마치 프로그램인 것처럼

간단하게 자동화시킬 수 있습니다.

 

이렇게 규칙적으로 쌓인 데이터는 통계를 낸다던지 하루 입출고량을

체크한다던지 할 때 굉장히 편하게 체크해 볼 수 있습니다.

코드 분석

cnt = Sheets("sheet2").Range("A1").CurrentRegion.Rows.Count + 1
Sheets("sheet2").Cells(cnt, 1) = Val(Sheets("sheet2").Cells(cnt - 1, 1)) + 1

오늘 중요한 부분은 이 부분인데요. 데이터가 차곡차곡 쌓이게 하기 위해서

마지막으로 입력된 번호를 찾아내는 코드입니다.

Sheets("sheet2").Range("A1").CurrentRegion.Rows.Count + 1

이 부분은 sheet2의 A1 전체 열에서 데이터가 있는 제일 마지막 값을 체크하는 것인데요,

번호가 매겨진 다음 셀에 값을 넣기 위해 cnt값에 +1을 해주었습니다.

Sheets("sheet2").Cells(cnt, 1) = Val(Sheets("sheet2").Cells(cnt - 1, 1)) + 1

이 부분에서 중요한 부분은 Val(Sheets("sheet2").Cells(cnt - 1, 1)) + 1 바로 이 부분인데요!

바로 윗 칸의 번호 값을 참조하기 위해 cnt - 1을 하여 그 위치의 값을 읽고

그 값을 기준으로 + 1 하여 번호가 순서대로 1,2,3,4,5,6과 같이 매겨지도록 구현해 놓은 부분입니다.

엑셀 자동화

이번 포스팅에서는 미리 세팅해놓은 값을 선택하여 버튼을 누르면

그 값을 순차적으로 기록하는 방법을 설명해드렸는데요!

 

사람이 손으로 일일이 기록해야 하는 부분을 이렇게 간편하게 할 수 있을 뿐만 아니라

쌓인 데이터를 분석해서 결과보고서 같은 곳에 활용할 수 있습니다.

 

다음 시간에는 앞서 배웠던 것들을 조합해서 실제 작업에 쓸 수 있도록 구현해보고자 합니다.

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

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

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