(VBA) 013 - 조건문을 사용해봅시다! if

이미지
#毎日育ちゃん可愛い大会
(설명자료)
pptx파일
(xlsm파일)
xlsm파일


★ 진행목적 : 왜 이걸 사용합니까. 1)VBA나 엑셀을 사용하다보면 특정 조건을 분기로 다른 데이터 처리방법을 사용하는 경우가 있습니다. 2)이것을 처리하는 것이 if문입니다! (switch-case문도 있지만, 이건 다음에 다루도록 할게요! 3)if를 사용하면 하나의 함수를 만들어 여러 가지 데이터를 처리할 수 있다는 이점이 있지요!
★ 어떤 경우 사용합니까? 1)예를 들자면, 데이터의 종류가 3가지라고 합시다. (0보다 크다, 0이다, 0보다 작다) 2)이 때, 이 데이터에 따라 각기 다른 데이터 처리를 해야한다고 하면, 지금까지의 학습 내용이라면 함수를 세 개를 만들고 각 조건별로 다른 함수를 불러야 하겠지요! 3)이를 해결하기 위해서, 하나의 함수에 조건문을 넣어서 처리해주는 것입니다!

★ 예제의처리과정을 알아봅시다! 1)예제에서는 0보다 클 때는 10배를 곱하고, 0보다 작을 때는 -1을 곱하고, 나머지의 경우(0인 경우) 1을,
바로 옆 Cell에 기록합니다! 2)각 Cell의 데이터를 조건식으로 받기 위해 If, Elseif의 옆에 달아놓았습니다. 3)이렇게 함수를 구현하면, 하나의 함수로 여러 가지 처리방법을 적용할 수 있겠지요! 4)처음엔 If~then, 두 번째 조건부터는 Elseif~then, 나머지 모든 조건은 Else로 처리하는 것으로 기억합시다!
Sub Test()
    Dim i As Integer

    Range

(VBA) 002 - VBA + Excel 복합 Loader concept

이미지
#毎日育ちゃん可愛い大会
(pptx파일)
pptx파일
(xlsx파일)
xlsx파일

★ 진행목적 : 왜 이걸 사용합니까. 1)복잡한 수식을 VBA로 구현하려면 너무 어렵겠죠! 2)회사에서 일을 하다보면 이미 만들어진 복잡한 수식을 반복해서 계산해야 될 때도 있죠! 3)그러면 수식은 Excel로,반복작업은 VBA로 처리하는 방법이 필요하겠죠! 그 때 사용합니다!

★ 어떻게 사용하는가? 1)미리 Excel 시트에 수식을 작성해놓습니다! 2)그리고, 데이터복사– 붙여넣기만 반복하면 됩니다! 너무 간단하죠! 3)데이터 복사 à계산영역으로 붙여넣기 / 처리된 결과 복사 à결과영역으로 붙여넣기!

★ 예제의 처리과정을 알아봅시다! 1)예제는 Raw, Cal, Result 총 3개의 Sheet로 구성되어있습니다. 2)Raw의 각 행에 대한 데이터를 입력받아, 사전에 작성된 Cal에서 계산을 한 후 Result

(VBA) 012 - Cells 를 사용한 상대좌표 활용

이미지
#毎日育ちゃん可愛い大会
(설명자료)
pptx파일
(예제파일)
xlsm파일



★ 진행목적 : 왜 이걸 사용합니까. 1)VBA를 사용하다보면, ActiveCell을 선택 후에 영역을 지정해야하는 경우가 왕왕 있죠! 2)Cells를 모르면 매번 주소를 만들어서 사용해야 하는 단점이 있습니다. 3)하지만 Cells를 사용할 수 있으면, ActiveCell이나 Range를 지정하고, 필요한 만큼 선택하여 사용할 수 있습니다!
★ 어떤 경우 사용합니까?
1)for, Do~Loop등을 사용한 반복문을 사용하여데이터나 이미지 여러 개를 한 번에 옮겨야 하는 경우가 있습니다.
2)이를 매번 주소를 입력하여 처리하는 것은 반복문 작성에 불리하게 됩니다.
3)그런 경우, ActiveCell, Range, Offset과 Cells를 사용한다면 손쉽게 처리할 수 있습니다!
★ 어떻게 사용하는가?
1)ActiveCell, Range 뒤에 붙여서 사용할 수 있습니다.
2)Offset 뒤에 붙여서도 사용할 수 있습니다!
3)단독으로도 사용 가능합니다! 이 경우, 상응하는 절대좌표로 인식합니다!
4)Range (Cells(시작행, 시작열), Cells(마지막행,마지막열))로 사용!

(VBA) 011 - 만든 함수에 변수(Parameter)넣기

이미지
#毎日育ちゃん可愛い大会
(pptx파일)
pptx파일
(xlsx파일)
xlsx파일

★ 진행목적 : 왜 이걸 사용합니까. 1)함수를 쪼개서 만들다보면, 행이나 열을 제어하는 인자를 전달해야 할 때가 있습니다. 2)같은 기능을 행이나 열을 통해 반복할 때 사용하는 기능입니다! 3)예를 들자면, 한 열에 대한 기능을 만들어놓고, 반복문을 통해 옆의 열로 이동하면서 처리할 때 사용하면 유용하죠!
★ 어떻게 생겼는가? 1)아래와 같이 만든 Sub함수의 옆의 괄호를 사용합니다! 2)지금까지는 Sub나 Function에 변수를 넣지 않았는데, 이제는 사용할 때가 되었네요!

1 2 3 4 5 Function data_input(j As Integer)     ActiveCell.Offset(0, j).Value = j End Function cs

★ 어떻게 사용하는가? 1)이렇게 매개변수(Parameter)가 들어가면, 단독으로는 실행이 되질 않습니다! 2)이미 반복실행하거나, 외부에서 제어하여 사용할 것으로 계획한 것이기 때문입니다. 3)그렇기 때문에 아래와 같이 제어인자 입력부 -> 데이터 처리부가 세트가 됩니다.
(中谷育ちゃんのイメージについて)

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

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

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


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

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

(VBA) 003 - Cell 선택을 통한 이미지 복사

이미지
#毎日育ちゃん可愛い大会
(설명자료)
pptx파일
(예제파일)
xlsx파일


★ 진행목적 : 왜 이걸 사용합니까. 1)회사에서 데이터를 처리하다보니 이미지 복사를 해야하는 경우가 있었습니다. 2)이런 경우 엑셀의 Cell을 선택하여 복사-붙여넣기를 흉내내어 매크로로 처리하는 방법이 있습니다. 3)이전 004세션에서 설명드린 것과 같이 object를 선택하여 처리하는 방법도 있겠습니다만,
Object 선택 처리방식도 분명 장단점이 있기 때문에 매크로 기록을 통한 이미지 복사를 말씀드리려고 합니다. ★ 매크로 기록을 사용해보자! 1)매크로 기록은 절대좌표와 상대좌표를 이용하여 사용할 수 있습니다. 2)절대좌표를 사용하여 기록하면, 기록했을 때 사용한 Cell 위치를 기준으로 처리하게 됩니다! 3)상대좌표를 사용하여 기록하면, 현재 선택된 Cell 위치를 기준으로 처리하게 됩니다!
★ Cell 선택을 통해 이미지를 복사할 때는 이미지보다 크게 Cell을 잡아야 합니다! 1)이미지 전체를 포함하지 않으면, 복사가 되질 않습니다! 2)그래서 이미지보다 크게 Cell을 선택하여 매크로를 기록해 볼 거에요!

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

이미지
#毎日育ちゃん可愛い大会
예시의 매크로 파일을 테스트 할 때는 저장된 폴더를 사용하실 폴더로 꼭 바꿔주세요!

(pptx파일)
pptx파일
(xlsx파일)
예제데이터파일Macro파일

★ 진행목적 : 왜 이걸 사용합니까. 1)행이나열, 또는 Sheet과 같이 다른 특성을 가지는 1,2,3차 데이터배열에 대한 처리 방법을 지금까지 설명드렸습니다. 2)그럼 이제, 다른 파일에서 데이터를 읽어올 방법을 알아볼 필요가 있습니다.
어째선가 회사의 데이터를 처리하다보면, 주기적인 이름의 엑셀 파일 특정 Sheet, Cell에 있는 경우가 많았습니다. 3)엑셀에서 이미 열려있는 파일의 참조는 ‘=‘을 사용하면 가능하지만, 닫힌 파일은 데이터를 읽지 못합니다. 4)그래서 이를 처리하기 위해 VBA의 ‘ExecuteExcel4Macro(주소)’를 사용합니다!

★ 다른 파일의 참조는 어떻게 합니까? 1)열려 있는 다른 파일의 데이터를 읽는 방식은 ‘=‘을 입력하고 해당 Cell을 클릭하면 됩니다! 2)그러면 아래와 같이 (=‘파일이 있는 폴더[파일명]Sheet명’!Cell주소)의 형태로 기록이 됩니다.

★ 닫힌 파일에 대해서는 INDIRECT는 사용이 되질 않습니다! 1)INDIRECT로는 처리가 되질 않습니다. 2)어째선가 전에 사용하던 INDIRECT를 사용하고 싶지만, 사용이 되질 않습니다