이 글이 필요한 사람
컴활 1급 함수 공부법은 봤지만 사용자 정의 함수만 나오면 VBA 때문에 따로 막히는 사람에게 맞는 글입니다.
매크로·VBA 입문 글은 자동화와 기본 구조를 맡고, 프로시저 글은 버튼이나 폼의 이벤트 처리 순서를 맡습니다. 이 글은 그중에서도 스프레드시트 계산작업 안에서 Function 형태로 직접 함수를 만드는 문제만 좁게 다룹니다.
컴활 1급 · 사용자 정의 함수
컴활 1급 사용자 정의 함수를 검색하는 사람은 대개 실기 계산작업에서 Function을 열어 놓고 첫 줄부터 손이 멈춥니다. 일반 함수는 어느 정도 외웠는데, VBA 편집기 안에서 직접 함수를 만들라고 하면 함수 문제인지 프로시저 문제인지부터 헷갈리기 쉽습니다.
대한상공회의소 공식 안내 기준으로 컴활 1급 실기는 스프레드시트 실무와 데이터베이스 실무를 보는 컴퓨터 작업형 시험입니다. 그래서 사용자 정의 함수는 긴 문법 공부가 아니라, 제한된 실기 시간 안에서 함수명, 인수, 반환값, 조건, 셀 적용을 같은 순서로 처리하는 연습이 중요합니다.
핵심 포인트
본문
컴활 1급 함수 공부법은 봤지만 사용자 정의 함수만 나오면 VBA 때문에 따로 막히는 사람에게 맞는 글입니다.
매크로·VBA 입문 글은 자동화와 기본 구조를 맡고, 프로시저 글은 버튼이나 폼의 이벤트 처리 순서를 맡습니다. 이 글은 그중에서도 스프레드시트 계산작업 안에서 Function 형태로 직접 함수를 만드는 문제만 좁게 다룹니다.
사용자 정의 함수는 VBA를 쓰지만, 목표는 이벤트 처리보다 계산 결과를 돌려주는 것입니다. 그래서 버튼 클릭, 폼 열기, 메시지 출력 같은 프로시저 감각으로 접근하면 첫 기준이 흔들립니다.
문제에서 요구하는 것은 보통 주어진 입력값을 받아 계산하거나 조건에 따라 다른 결과를 반환하는 것입니다. 따라서 처음 볼 것은 어떤 동작이 시작되는지가 아니라, 함수가 어떤 값을 받아 어떤 값을 돌려주는지입니다.
이 차이를 잡으면 사용자 정의 함수는 긴 코드 문제가 아니라 '내가 직접 만드는 엑셀 함수'에 가까워집니다.
지시문에서 먼저 표시할 것은 함수 이름입니다. 예를 들어 계산할 함수 이름이 제시되어 있다면, 그 이름을 Function 다음에 정확히 놓는 것이 첫 줄의 핵심입니다.
그다음 괄호 안 인수를 봅니다. 인수는 함수가 받을 입력값입니다. 가격, 수량, 등급, 날짜처럼 무엇을 받아 계산해야 하는지 표시하면 본문에서 쓸 재료가 보입니다.
이 단계에서 계산식까지 한 번에 떠올리려 하지 마세요. 함수명과 인수만 정확히 잡아도 사용자 정의 함수의 뼈대가 먼저 생깁니다.
Function 문제에서 가장 중요한 문장은 마지막에 어떤 값을 돌려줄지입니다. VBA 사용자 정의 함수에서는 계산한 결과를 함수 이름에 대입하는 흐름으로 생각하면 됩니다.
예를 들어 중간에 result라는 값을 만들었다면, 마지막에는 함수명 = result처럼 결과를 돌려주는 줄이 필요합니다. 이 감각이 없으면 계산은 했는데 셀에 결과가 나오지 않는 실수가 생깁니다.
그래서 연습할 때는 항상 '이 함수는 무엇을 반환하나'를 한 줄로 먼저 적고 시작하세요.
사용자 정의 함수 지시문에는 등급, 구간, 특정 글자 포함 여부처럼 조건이 붙는 경우가 많습니다. 이때 바로 If부터 쓰면 함수명, 인수, 반환값이 흐려질 수 있습니다.
먼저 조건이 없다고 가정했을 때의 기본 계산을 생각하고, 그다음 어떤 경우에만 결과가 달라지는지 붙이는 편이 안정적입니다.
조건이 여러 개라면 보기 좋게 나누기보다, 문제에서 요구하는 우선순서가 무엇인지 먼저 표시하세요. 조건 순서가 틀리면 문법은 맞아도 결과가 달라질 수 있습니다.
사용자 정의 함수는 코드 창에서 끝나는 문제가 아닙니다. 결국 시트의 셀에서 함수가 호출되어 결과가 나와야 합니다.
그래서 코드 작성 뒤에는 함수 이름이 지시문과 같은지, 인수 개수와 순서가 맞는지, 셀에서 넣은 값이 Function의 인수와 연결되는지 확인해야 합니다.
함수명 철자, 괄호 안 인수 순서, 결과 셀 위치는 시험장에서 매우 현실적인 실수 지점입니다. 마지막 검토는 멋진 문법보다 이 세 가지를 먼저 보세요.
프로시저는 '어떤 이벤트가 일어나면 무엇을 실행하는가'를 묻습니다. 반면 사용자 정의 함수는 '어떤 입력값을 받아 어떤 결과를 돌려주는가'를 묻습니다.
둘 다 VBA를 쓰기 때문에 같은 파트처럼 느껴지지만, 문제를 읽는 질문이 다릅니다. 버튼, 폼, 메시지, 초기화가 중심이면 프로시저 쪽이고, 함수명, 인수, 계산 결과가 중심이면 사용자 정의 함수 쪽으로 보면 됩니다.
이 구분이 되면 VBA 전체를 한 덩어리로 두려워하지 않고, 문제 유형에 맞게 첫 줄을 잡을 수 있습니다.
사용자 정의 함수 문제를 완벽하게 한 번에 만들려고 하면 조건 하나에서 시간이 묶입니다. 먼저 Function 줄, 인수, 기본 계산, 반환값 줄처럼 쉬운 뼈대부터 작성하세요.
그다음 조건이 붙는 부분을 보강합니다. 조건이 바로 안 보이면 표시하고 넘어가되, 함수 틀과 쉬운 계산은 남겨 두는 편이 실전 점수화에 가깝습니다.
실기 시간 안에서는 어려운 한 줄을 오래 붙잡는 것보다, 작성 가능한 줄을 먼저 확정하고 결과가 나오는지 확인하는 쪽이 더 실용적입니다.
1일차에는 Function 이름과 인수만 보고 함수 틀을 만드는 연습을 합니다. 2일차에는 계산 결과를 함수명에 돌려주는 반환값 줄을 반복합니다.
3일차에는 If 조건이 들어간 문제만 따로 모아 조건 순서와 기본값을 확인합니다. 4일차에는 실제 시트에서 함수를 호출해 인수 순서와 결과 셀을 검토합니다.
처음부터 다양한 예제를 많이 푸는 것보다, 매번 같은 순서로 함수 뼈대가 잡히는지 보는 편이 더 빠르게 안정됩니다.
시험 직전에는 새 문법을 늘리기보다 함수명, 인수, 반환값, 조건, 셀 적용만 확인합니다.
문제를 열면 함수 이름을 찾고, 인수 개수를 세고, 반환값을 생각하고, 조건식을 붙이고, 셀에서 호출 결과를 확인하는 순서로 반복하세요.
사용자 정의 함수는 외울 것이 끝없이 늘어나는 파트가 아닙니다. 매번 같은 질문으로 지시문을 자르면, VBA 화면이 떠도 첫 줄에서 멈추는 시간이 줄어듭니다.
FAQ
둘 다 VBA를 쓰지만 시작 질문이 다릅니다. 프로시저는 이벤트가 일어났을 때 실행할 동작을 쓰는 문제이고, 사용자 정의 함수는 입력값을 받아 계산 결과를 반환하는 문제로 보는 편이 좋습니다.
함수명과 인수입니다. 어떤 이름의 함수를 만들고, 괄호 안에서 어떤 입력값을 받을지 먼저 잡아야 계산식과 조건식이 덜 흔들립니다.
반환값을 확인해야 합니다. 계산한 결과가 함수 이름에 대입되는 흐름인지, 셀에서 호출한 함수명과 인수 순서가 맞는지 먼저 보세요.
함수 공부법 글은 엑셀 기본 함수와 찾기·논리 함수 같은 전체 루틴을 다룹니다. 이 글은 VBA 편집기에서 직접 Function을 만드는 사용자 정의 함수 문제만 따로 다룹니다.