(VBA) 010 - 이름 비교 후 데이터와 이미지를 복사하는 모듈 만들기












#毎日育ちゃん可愛い大会

(pptx파일)
pptx파일
(xlsx파일)
xlsm파일


★ 진행목적 : 왜 이걸 사용합니까.
1)일반적으로 회사에서는 데이터와 이미지를 필터라는 기능을 이용해서 수동으로 처리하고 있습니다.
2)일반적으로 Serial labeling을 합니다만, 이걸 다시 처리하는 것도 Loss, 제대로 안되면 다시하는 것도 Loss입니다.
3)어째선가 데이터가 수백개가 넘어가고 이미지가 제대로 pre-processing되어 있지 않으면 Human error가 다발합니다.
4)그런 관점에서 자동 비교 후 데이터 & 이미지 카피가 필요하게 됩니다.


★ 오늘은 난이도가 조금있는 주제가 되겠습니다!
1)제가 회사생활하면서 직접 만들어 본 주제를 일반문제에 해결할 수 있도록 간략화하여 설명드리겠습니다.
2)한 가지 주제에 대한 것이 아니라 복합적 주제를 동시에 다루니까 조금 어려우실 수도 있어요!
3)전체 코드를 기능별로 묶어드릴 테니, Divide & Conquer 관점에서 한 번 확인해봅시다!


Divide & Conquer를 해봅시다!
1)첫 번째는 역시 기능을 쪼개서 메쏘드를 만든 뒤 하나의 함수로 합치는 것이겠죠!
2)여기선 기준 데이터 Sheet를 먼저 옮기고, 그 다음에 비교 데이터 Sheet에서 같은 이름이 있을 때 결과 Sheet로 옮기는 방법을 사용해보려고 합니다!

Excel Module을 구성해봅시다!
1)예시를 위해 아래와 같이 Excel Tab을 준비해서 진행하려고 합니다.
2)Option sheet에서는 사용할 유저의 편의를 위해 Sheet이름과 시작점을 바꿀 수 있도록 몇 가지 설정을 넣습니다.어째선가 이런식으로 만들어 두는 편이 회사에서 범용으로 쓰기 편했다고 생각합니다.
3)마지막으로 매크로를 실행할 수 있는 버튼을 만들면 끝!


★ 데이터 옮기는 방법에 대한 고민
1)컴퓨터는 말 그대로 Compute + r 이기 때문에 계산만 할 줄 알지 자가 판단을 하지 못합니다.
2)그러면 데이터가 몇 개 있는지는 어떻게 알까? 매 번 사용자가 입력해줄 것입니까?
3)그렇게 하면 범용(Common use)관점에서 매번 VBA Code를 수정해야 하고, 프로그램 확산성에서 불리하게 됩니다.
이는 사내에서 널리 사용되기 어렵다는 것입니다. 사용자에게 최소한의 입력 최대한의 이익을 주는게 목표입니다!
4)그렇기 때문에 전에 말씀드린 Do ~ Loop While 을 사용하면 이를 처리할 수 있습니다!


★ 데이터를 비교 후 옮기는 방법에 대한 고민 (Scanning method)
1)그러면 데이터를 어떻게 비교해서 옮길까요? 복사-붙여넣기가 1단계라면 비교는 2단계라고 기억하시면 쉽겠네요!
2)1단계와 2단계의 차이는 바로 검색자(Index)1개인지 2개인지가 되는데,
여기선, 비교데이터의 이름을 가지고 결과Sheet의 이름과 비교하여 일치하면 복사하는 방법을 사용할 것입니다.
3)비교Sheet에서 데이터의 이름을 하나 지정하고, 해당 데이터의 이름을 결과 Sheet에서 찾은 뒤 일치하면 복사해줍니다!

Divide했던 VBA code를 합쳐줍니다! (Divide & Conquer à Merge)
1)아래와 같이 쪼개서 만든 기능들을 하나의 함수로 합쳐줍니다.
2)Code가 복잡해보이지만, 단순히 변수를 넣어주는 것으로 아래와 같이 뭉떵이로 보시면 크게 이해할 수 있게 됩니다.
3)이 부분은 개인의 Know-how에 따라서 크게 달라지는 부분이니 예시와 같이 하시지 않으셔도 괜찮아요!


(中谷育ちゃんのイメージについて)
本当に可愛い中谷育ちゃんのイメージが含まれています。ありがとうございます。
何か問題があったら、教えてください。直ちに処理します。

※ 수정사항
(20.02.27) pptx 4-5page와 xlsm 파일의 모듈에 잘못된 부분을 수정했습니다.

댓글

이 블로그의 인기 게시물

(Node.js) XLSX로 결과 출력하기 / 모듈 디자인 Exporting / Node.js modular design

(VBA) 009 - 닫힌 파일에서 데이터 읽어오기 (ExecuteExcel4Macro)

(Node.js) EUC-KR을 Cheerio - Iconv-lite로 불러올 때