엑셀 26

Excel에서 작성한 Chart를 Word로 옮기기

Excel에서 만든 Chart가 아주 많아 일일이 하나씩 옮기는건 너무 힘들어 한꺼번에 옮길 방법이 없냐는 질문이 왔습니다. 실습 파일 다운로드 실습 파일은 압축 파일인데, 압축을 해제하면 엑셀 파일과 워드 파일이 있습니다. 엑셀 파일에 VBA 코드가 있고, 워드 파일은 엑셀 차트가 복사될 파일입니다. 꼭 같은 폴더에 있어야 코드가 정상적으로 동작합니다. 파일을 보내지 않아서 예시로 차트 3개를 만들었습니다. 한 시트에 3개 차트를 만들었는데, 여러 개 시트에 있어도 실행하는데는 어려움이 없습니다. VBA 코드에서 Word 개체를 불러와 사용해야 하므로 Word 개체를 참조로 추가해야 합니다. VBE를 실행해서 [도구] - [참조]를 실행합니다. [사용 가능한 참조]에서 'Microsoft Word 16..

엑셀 2020.05.20

어디에서나 사용자 정의 함수를 사용할 수 있도록 하기

내게 필요한 동작을 하는 함수를 만들어 쓸 수 있다는건 신나는 일입니다. 이렇게 만든 사용자 정의 함수를 현재 파일에서 사용할 뿐만아니라 다른 엑셀 파일에서도 쉽게 사용하는 방법을 소개하겠습니다. 실습 파일 다운로드 실습 파일에는 평균성적이라는 이름의 사용자 정의 함수가 있습니다. 현재 파일에서 평균성적 함수를 사용하려면 보통 함수 쓰듯이 셀에 이퀄(=)을 입력한 뒤 함수이름인 '평균성적('을 입력하고, 인수를 지정하고 키를 누르면 됩니다. 그냥 보통 함수 쓰는 법과 같죠. 다른 엑셀 파일에서 이 사용자 정의 함수를 실행하려면 복잡해 집니다. 두가지 방법이 있습니다. 첫번째는 사용자 정의 함수가 들어 있는 파일이 열려 있을 때 파일 이름까지 포함해 함수를 불러 사용하는 방법입니다. 실습 파일을 미리 열어..

엑셀 2020.05.10

사용자 정의 함수 사용하기

어느 분이 질문을 하셔서 사용자 정의 함수를 만들었습니다. 사용자 정의 함수 사용하는 방법을 소개하겠습니다. 완성 파일 다운로드 만든 사용자 정의 함수는 최근 3개 시험 점수 평균을 구하는 역할을 합니다. [T5] 셀에서 김치국 학생 국어 과목의 평균 성적을 구합니다. 3월 15일과 3월 5일엔 응시하지 않아 점수가 없습니다. 2월 15일, 2월 5일, 1월 15일이 최근 3번 응시한 성적입니다. 그래서 [E5], [H5], [K5] 셀 점수 합을 구해 3으로 나눈 값을 [T5] 셀에 나타내려고 하는 겁니다. 다른 과목도 마찬가지입니다. 키를 누르면 Visual Basic for Appications Editor(VBE)가 실행됩니다. 평균성적이란 이름으로 함수를 만들었습니다. 인수는 과목명과 계산범위를..

엑셀 2020.05.09

엑셀 VBA로 자료 처리 - 신청자, 회원목록 비교 2

일을 맡기로 하고 집으로 돌아오는 길에 어쩐지 쎄하다 싶었더니 작업량이 만만치 않았습니다. 코딩으로 처리하는 것은 당연히 그렇다고 쳐도 잘못된 형식으로 등록된 데이터를 수정하는 작업에 아주 많이 시간이 소요되고 있습니다. 아침에 일어나자마자 시작해서 밤늦게까지 작업해야 겨우 할 수 있는 수준이죠. 첫날에 코딩 구현도 하고 적용도 해야 해서 12시를 넘어 작업하지 않을 수 없었습니다. 이건 뭐 예상한 일이니까 그렇지만, 문제는 처리한 작업을 넘긴 후에도 계속 추가 작업을 해야 한다는 것이었습니다. 특히 처리한 일을 요구사항이 달라져서 다시 해야할 때는 아주 짜증스럽습니다. 겨우 1차 처리 기한에 맞춰 결과물을 넘기고 다음주까지 한숨 돌리나 했더니 중복자 처리와 추가 처리자 자료가 넘어 와 계속 작업을 하지..

엑셀 2020.05.02

Range.Interior 개체와 Range.DisplayFormat.Interior 개체

VBA로 작업하다 보면 확인된 셀에 표시하기 위해 Color나 ColorIndex 속성을 이용해 채우기 색을 지정하게 됩니다. 이 때 Range.Interior 개체를 이용해 색상을 지정합니다. Range("A1").Interior.ColorIndex=19 이렇게 표시된 색상을 다음번 처리할 때 셀에 채우기가 설정되었는지 아닌지로 조건 처리를 하게 됩니다. 그런데 조건부서식을 통해 색상을 지정한 셀은 Range.Interior 개체로는 확인되지 않습니다. 이럴 때 필요한 개체가 Range.DisplayFormat 개체입니다. If Range.DisplayFormat.Interior.ColorIndex=19 Then MsgBox "확인" End If 직접 채우기 색을 지정한 것 뿐만아니라 조건부서식과 같이..

엑셀 2020.04.29

엑셀 VBA로 자료 처리 - 신청자, 회원목록 비교

며칠전 지인이 일을 좀 도와 달라고 연락이 왔습니다. 신청자 파일과 회원 목록 파일을 비교해 정상 회원인지 확인하고, 잘못된 신청자를 제외한 나머지를 신청확정 파일로 정리하는 작업이었습니다. 신청자 파일, 회원 목록 파일, 신청확정 파일 모두 엑셀 파일이라 엑셀 VBA를 이용하면 딱 좋은 업무라고 생각했습니다. 총 데이터 건수는 100,000건 정도인데, 각 지역별로 나눈 8개 파일이고, 파일 중 많은 데이터는 35,000건 정도였습니다. 모두 모아 한꺼번에 처리할까 했는데, 어차피 나눠져 있어 그냥 나눠진 파일 단위로 처리하기로 했습니다. 그런데 파일을 나누지 않고 작업했더라면 정한 시간 내에 처리 못할 뻔 했었습니다. 방문해 처리 내용을 듣고, 데이터를 잠깐 봤는데, 신청자 파일에 입력 형태가 엉망이..

엑셀 2020.04.28