엑셀로 풀어가는 세상 (116)
엑셀로 만든 블로그 이벤트 당첨자 발표용 자동추출 프로그램
반응형
블로그를 하다보면 심심치 않게 이벤트에 당첨되는 사례가 맞습니다.  저의 경우에도 많은 이벤트에 참여해서 수도 없이??? 당첨되었습니다.  이벤트에 참여하면서 들었던 생각이 있습니다.

'이벤트 주최자들은 어떻게 당첨자를 선정할까?'라는 것 입니다.

솔직히 주최자의 주관적 판단에 좌지우지되는 경우도 있을 거라 생각합니다.  특정 후보자에게 느끼는 인간적 감정, 후보자의 방문이력, 남겨준 댓글이력, 후보자의 파워 등등 입니다.

블로그 운영자라면 누구나 한 번쯤 꿈꾸는 '이벤트' 진행을 저도 하였습니다.
이사문제로 늦게나마 당첨자 발표를 준비하게 되는 과정에서 '선정방식'에 대해서 몰두하였습니다. 인터넷 검색을 통해 알아보니 '로또번호 자동추출기'는 많이 나오는데 이벤트 당첨자 발표와 관련한 좋은 프로그램이 없어서 직접 만들었습니다. 




   이벤트 당첨자 발표용 자동추출(엑셀)
 




다양한 이벤트 가 동시 진행한다는 기준으로 엑셀 을 이용하여 만들었습니다.
이벤트 명 입력, 선발자 수와 후보자 이름을 먼저 기록합니다. 기초 자료 입력이 끝나면 이미지 상단의 이벤트명에서 이미 구분영역에 입력되어 있는 이벤트명을 선택합니다.

이벤트명 선택과 동시에 아래와 같이 1명이 자동으로 당첨됩니다.

첫 번째 당첨자 '미실이'이 적혀 있는 곳에 별도의 초록색과 같은 구분 표시를 합니다.


이벤트 선발자 수가 2명입니다. 여기서 F9번 KEY를 누르시면,
아래와 같이 다음 당첨자가 나옵니다.


요즘 제가 재미있게 시청하는 '선덕여왕' 이벤트로 당첨된 사람은 바로 미실이와 문노 입니다. 



의외의 결과로군요.
 제가 선덕여왕을 재미있게 본다지만, 이벤트 당첨 선물 품목이 10만원 상품권이라면, 개인적 편애에 의해서 김유신, 선덕여왕에게 주고 싶겠지요. 하지만 자동추출 프로그램에 의하면 선덕여왕에서 악역을 하는 '미실'과, 얼굴 한 번 나오지 않은 '문노'가 당첨자가 될 수도 있습니다. 공정하게 선정했다고 볼 수 있지요.

 

인지상정! 어쩔 수 없을 경우.....
 하지만! 공정하게 할려고 해도, 끌리는 후보자가 있습니다. 왠지 이 사람이 당첨되었으면 좋겠다....선물 품목이 이 사람에게 정말 필요할 것 같다...는 생각을 하게 마련 입니다.
이때는 후보자 이름을 기록을 할 때 중복해서 입력해 보는 것도 괜찮겠지요.
중복을 넘어서 삼중,사중, 오중, 육중......도 가능하겠지요. 그 만큼 확률이 높을테니깐요.



제가 만든 허접한 엑셀파일을 올립니다. 비밀번호는 9876 입력입니다.
반응형
  Comments,     Trackbacks
가계부가 차계부를 만날 때
반응형
오늘은 저의 자동차 정기검사를 받고 왔습니다.
20,000원의 검사비를 내고 할려니....배가 아프더군요.
10분정도의 검사가 진행된 후, 차주를 불러서 가 보았습니다.
제가 원래 관공서의 업무에 불만이 많은 놈이라서 무뚝뚝하게 다가가니, 담당자는 의외로 자세하게 검사결과를 알려 주었습니다.

다행히 제가 검사받은 곳은 교통안전공단에서 출장검사소로 지정한 개인정비 업체였기 때문인 듯 합니다. 미래 잠재고객으로 생각한 것일 테지만요.

담당자가 말한 검사 결과는 대충 이랬습니다.

  • 자동차의 다른 곳들은 이상이 없는데,
  • 휠얼라이먼트 점검을 받을 필요가 있다.
  • 또한 앞 바퀴의 마모가 많이 되었다.
  • 하지만 뒷 바퀴의 상태는 좋으니 앞 바퀴와 뒷 바퀴를 바꿔라.
  • 이렇게 어느 정도 운행하다가,
  • 타이어 교체 시 휠얼라이먼트 점검을 받아라



   가계부가 차계부를 만날 때!!!
 

성격 탓인지 저는 자동차 관리를 좀 등한시 했습니다. 대충 몰고 다니다가 탈이 나면 정비소에 가서 손을 보는 형식이었습니다. 이러다 보니 한번 정비소에 들리면 목돈이 팍팍 깨지기 일수였습니다.
그리하여 일전에 엑셀로 만들어 본 가계부 에 차량 관리 부분을 접목하여 새로 수정한 일명,"가계부가 차계부를 만날 때"라는 엑셀 파일을 새로 만들었습니다.


주요 화면 보기

차계부 엑셀 양식주행거래와 연료구입현황을 입력하면 연비가 나옵니다.



차계부 양식차량부품 주기를 알수 있습니다.





관련 글 더 보기

반응형
  Comments,     Trackbacks
엑셀 - 중복 데이터 입력 방지
반응형
자료를 입력하다 보면 특히 숫자나 일련번호 형태의 데이타는 중복입력될 가능성이 많습니다. 현재 입력하는 데이터가 이미 입력된 데이타와 중복할 경우 중복이라는 메세지가 나온다면 편리할 것 입니다.

여기서는 사원번호라고 되어 있지만 실생활에서는 여러가지가 적용될 수 있습니다. 이를테면 주민등록번호 혹은 학번들이 될 수 있습니다. 구체적인 방법은 다음과 같습니다.



위와 같이 중복 입력 메세지를 나타나도록 하는 방법 입니다.







1. 중복 입력 여부를 확인할 블록을 먼저 지정합니다.
여기서는 E4:E24 범위 입니다.










2. '데이타' 메뉴의 '유효성 검사' 선택 합니다.
설정탭을 선택한 후 제한대상수식을 위와 같이 입력합니다.











3. 테이터 유효성  검사에서 오류메시지탭을 선택한 후 아래와 같이 스타일, 제목
, 오류 메시지
등을 입력 합니다. 그리고 확인 버튼을 누립니다.





반응형
  Comments,     Trackbacks
가계부 '엑셀로 만든 가계부"
반응형
마음이 심난 할 때는 뭔가에 푹 빠져 지내는 것이 좋은 방법인가 봅니다. 이런 저런 소일거리로 세상사를 잊고 싶은 마음에 간단한 가계부를 만들어 보았습니다.

인터넷 검색엔진에 올려진 무료 가계부를 살펴 본 결과, 뛰어난 실력으로 작성된 좋은 프로그램이 즐비했습니다. 특히 엑셀을 이용한 것들은 부러움을 갖기 충분했습니다. 저는 엑셀 을 잘 다루지 못하기에 이들과는 다른 뭔가를 다른 차이점을 무엇으로 할 것인가를 고민했습니다..

'과연 우리집 가계살이는 한국 평균치와 비교할 때 어떤가?'
에 대한 고민을 바탕으로 분석기능 좀 가미했습니다.
한국 가정의 평균 살림 현황은 통계청에 올려진 자료를 이용했습니다(가장 최신 자료가 2007년도 까지만 조사 되어 있더군요). 그리고 항목정리와 입력화면은 비즈폼의 무료 가계부를 이용하였습니다.

엑셀가계부 이모저모
1. 항목정리

항목정리항목정리

항목정리 시트 입니다.지출항목에 나온 큰 분류(신용카드,식비, 교통관련비,주거비,,,)는 수정하지 않는 것이 좋습니다. 다른 데이터와 연동되어 있기 때문입니다. 
하지만 소분류(신한카드,회식비,,,,,잡화,,,보험료,,,,)은 삭제 삽입등 자유롭게 변경할 수 있습니다.

2. 가계부 입력

가계부엑셀 입력화면입력화면

일자별로 입력할 수 있는 화면입니다.

3. 소비현황 화면

엑셀가계부소비현황 화면

2번의 화면에서 입력된 데이타가 자동으로 취합되어 전체적인 소비현황을 볼 수 있는 화면 입니다.

4. 한국평균 가정살림과 비교

가계부엑셀파일평균 살림살이와 비교

통계청 자료를 기초로하여 한국 평균 가정살림와 우리집 살림 현황을 비교할 수 있도록 했습니다. 항목별로 확인할 수 있습니다.
위의 화면에서 파란색 선이 한국 평균 가정 살림을 나타내는 그래프 입니다.
2008년년의 자료가 아직 통계청에 올려져 있지 않아서 1982년부터 2007년까의 자료를 단순이동평균법을 사용하여 2009년도 한국 평균 가정살림예상치를 산출하여 비교한 것 입니다.

가계부 엑셀종합평가


제가 작성한 파일을 업로드 합니다. '항목정리' & '가계부 입력'시트에 입력하는 기능은 오픈했습니다. 나머지는 수정못하도록 했습니다.



2009/05/26 수정사항
아래의 baramseo님의 지적내용에 따라 수정하였습니다.
- [가계부]시트 내 '카트포함'이라는 오타 수정완료
- 시트 배경색상 수동설정 해제
- 비밀번호 : 9876


가계부에 자동차 관리부분을 포함한 파일은 올립니다. 2009/06/18


반응형
  Comments,     Trackbacks
엑셀팁 - 미니 ERP 만들기1(VLOOKUP으로 시트이름을 참조하여 BOM 데이터 가져오기)
반응형

직장생활을 하다보면 마이크로 소프트웨어 엑셀(EXCEL)의 사용능력이 많이 필요로 하게 됩니다. 대부분의 일반 기업체의 ERP를 구축하여 회사의 운영현황을 관리하고 있습니다.
자재생산업무 담당자의 경우는 생산량에 따른 자재의 소요량이 정확하게 산출되어야 하고 구매 담당자의 경우는 생산계획수량에 맞는 자재를 확보해야 하는 것이 기본원칙 입니다.

이러한 업무를 하기 위해서는 반드시 BOM(Bill Of Material)을 이용하여 객관적인 데이터를 산출하게 됩니다. 만약에 회사의 규모가 작아서, 설립이 얼마되지 않은 신생 법인일 경우, 또는 ERP구축 비용이 없어서 등 여러가지 이유로 주먹구구식으로 자재 소요량을 산출하기도 합니다.(ERP 구축은 돈이 있다고 해서 가능한 부분은 아닙니다만)

이와 같은 상황일때는 어쩔 수 없이 EXCEL의 더하기 빼기,나누기, 곱하기 등의 단순한 기능을 이용할 수 밖에 없을 겁니다. 그런데 제품 종류가 작게는 두가지에서 많게는 몇천가지나 되는데 이것을 EXCEL의 사칙연산만 이용하여 소요량을 산출한다는 것은 하루가 24시간이 아니라 아마도 240시간 정도인 사람에게나 그나마 유효한 방법이 아닐까 생각합니다.


시트 이름을 참조하여 자동으로 자재소요량BOM을 가져오기


아래의 내용에서 EXCEL을 이용하는 사람이라면 대부분 알고 있는 VLOOKUP함수를 사용하여 간단하게 자재소요량을 산출하는 방법을 소개하고자 합니다.

 


위의 예제 화면은 최종완성된 산출 데이터 입니다.

A4:A38까지는 자재전체 리스트, C1:L1까지는 생산일자, C2:L2는 생산품목, C3:L3은 생산수량입니다.
생산품목 입력란과 생산수량 입력란에 해당되는 데이터를 입력하면 C4:L38셀에서 소요량이 자동으로 산출되게 설정 했습니다. 해당품목의 BOM 데이터는 시트 A,B,C~Q에서 자동으로 가져와서 생산량에 대입하여 산출하게 된다는 것입니다.

VLOOKUP 함수와 INDIRECT함수를 혼합사용하여 각 셀에 입력되어 있습니다.
만일 Q제품의 BOM 내용을 VLOOKUP함수 가져 온다면
C4셀에 '=VLOOKUP($A4,A!$A$3:$E$44,5,FLASE)'을 이용하면 됩니다. 하지만 여기서 우리는 C2:L2영역에 제품명만 입력하면 자동으로 소요량 산출되는 결과물이 나오도록 설정해야 합니다. 즉 변화되는 값(C2:L2)을 자동으로 당겨오게 만들면 되는 것입니다.
수식 =VLOOKUP($A4,A!$A$3:$E$44,5,FALSE)에서 A!의 A는 시트이름을 의미하므로 A!만 자동을 변경되도록 INDIRECT함수를 이용하면 됩니다.


본 포스트에 사용된 파일을 원하시는 분은 비밀댓글로 이메일 주소를 남겨주시면 발송토록 하겠습니다.


반응형
  Comments,     Trackbacks
레이의 VBA 정복기4 - 개체와 컬렉션 알아보기
반응형

프로시저를 작성할 때 기본적으로 알아야 할 개념이 바로

개체, 컬렉션, 메서드, 속성, 이벤트 등과 같은 용어이다.
엑셀VBA 관련 서적을 보거나 도움마를 찾아볼 때 이런 용어를 자주 접하게 되는데, 엑셀에서 작업하는 모든 대상을 개체(Object)라 부른다.

사용자 삽입 이미지



개체(Object)

셀, 셀 범위 영역, 위크시트, 차트, 도형, 엑셀 파일, 엑셀 프로그램 등과 같이 엑셀에서 작업하기 위해 사용하는 모든 대상 하나하나가 개체이다.



컬렉션(Collection)

반면에 여러 시트나 여러 셀 또는 여러 파일을 대상으로 작업할 때는 컬렉션(Collection) 개체를 이용한다. 즉 컬렉션은 개체를 여러 개 모아 놓은 것을 의미한다. 워크시트나 위크북(파일) 개체는 WorkSheet, WorkBook으로 표현하고, 워크북이나 워크북 컬렉션 개체는 WorkSheets, WorkBooks로 표현한다.


 저와 함께 희망을 향해 함께 달리죠.이걸 꾸~욱 누르면서



반응형
  Comments,     Trackbacks
레이의 VBA 정복기3 - 프로시저의 종류(Sub, Function, Property)알아보기
반응형

사용자 삽입 이미지


프로시저는 실행하는 성격에 따라 Sub, Function, Property로 나눌 수 있다.

프로시저에는
매크로를 작성할 때 많이 보았던 Sub 프로시저와
사용자 정의 함수를 만들 때 사용하는 Function 프로시저가 있다.
그리고 개체의 속성을 정의할 수 있는 Property도 있다.





Sub 프로시저 : 특정한 동작을 실행한다.

VBA로 프로그래밍을 하거나 매크로를 작성할 때 가장 많이 사용하는 프로시저 형태이다. 다음과 같이 Sub로 시작하여 End Sub로 끝나는데, 프로시저를 이용하여 작업할 내용은 Sub와 End Sub사이에 명령문으로 표현한다.

<형식>
Sub 프로시저 이름()
       명령문
       명령문
End Sub





Function 프로시저 : 특정한 계산을 수행하고 그 결과값을 돌려준다.

프로시저 안에 작성된 명령문을 실행하고, 실행한 결과 값을 반환할 수 있는 프로시저이다. 기존 엑셀함수에는 없는 새로운 사용자 정의 함수를 만들 때도 Function 함수를 사용한다.
다음과 같이 Function으로 시작하여 End Function으로 끝나는데, 프로시저를 이용하여 작업할 내용은 Function과 End Function 사이에 명령문으로 표현한다. 이때 결과 값은 프로시저 이름을 이용하여 반환한다.

<형식>
Function 프로시저 이름()
             명령문
             명령문
             프로시저 이름 = 값
End Function







Property 프로시저

개체의 속성에 값을 할당할 때 사용하는 프로시저가 Property이다. 속성 값을 할당할 때는 Property Let()문을 사용하고, 속성 값을 읽어 들일 때는 Property Get()문을 사용한다. 그리고 개체 참조의 값을 반환하기 위해서는 Property Set문을 사용한다.

<형식>
Property Get[Let|Set] 프로시저 이름()
            명령문
            명령문
            [Get인 경우 프로시저 이름 = 값]
End Property


 


반응형
  Comments,     Trackbacks
레이의 VBA 정복기2 - VBA 구성요소
반응형

VBA 프로그래밍의 구성 요소

■ 코드 : VBA 프로그램의 최소 단위
■ 프로시저 : 코드들의 묶음으로 특정 작업을 수행할 수 있는 단위
■ 모듈 : 관련된 작업에 해당하는 여러 프로시저들의 묶음 단위
■ 프로젝트 : 여러 모듈이 저장될 수 있는 하나의 엑셀 통합 문서



코드란?


프로그램을 구성하는 가장 최소 단위는 코드이다. 매크로 기록 기능을 이용하여 변환된 프로그램 내용을 확인했을 때, 각 문장을 구성하는 명령어 하나하나가 코드에 해당된다.


프로시저란?

코드들이 모여 한 문장을 완성하게 되고, 이러한 문장들이 모여 하나의 프로시저가 완성된다. 따라서 프로시저는 특정 작업을 수행하여 결과를 확인할 수 있는 프로그램 단위라 볼 수 있다. 매크로 기록 기능을 이용하여 기록된 매크로도 하나의 프로시저에 해당된다.


모듈이란?

하나의 엑셀 파일에는 여러 가지 작업을 수행하는 프로시저가 존재할 수 있다. 각 작업 용도에 따라 별개의 프로시저를 작성하게 되는데, 이와 같이 여러 프로시저가 묶여 하나의 모듈이 된다.


프로젝트란?

여러 개의 모듈들이 모여 하나의 프로젝트가 된다. VBA에서 하나의 엑셀 파일에 작성되어 저장되는 모든 코드 내용을 묶어서 프로젝트라고 할 수 있다. 따라서 여러 엑셀 파일이 열려 있는 경우 VBE 창을 열면, 프로젝트 탐색기 창에 열려 있는 파일 하나하나가 프로젝트 단위로 표시되다.



저와 함께 희망을 향해 함께 달리죠.이걸 꾸~욱 누르면서




반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
TODAY TOTAL