먼저 결론: 함수 결과와 원래 필드값은 다릅니다
Format(expression, format)의 첫 인수는 표현할 값, 두 번째 인수는 표시 규칙입니다. 값그대·모양만을 떠올린 뒤 원본과 결과를 따로 보세요. Format을 호출하는 것만으로 테이블의 원래 필드가 갱신되지는 않습니다.
반환 자료형은 Variant(String)입니다. Format(7, "0000")의 결과는 문자열 "0007"이지 숫자 7의 자료형을 그대로 유지한 새 값이 아닙니다. 결과를 변수나 다른 필드에 대입하면 그 대상의 형식에 따른 변환이 별도로 일어날 수 있습니다.
날짜 형식: yyyy, mm, dd의 순서를 읽으세요
그레고리력 기준 Format(DateSerial(2026, 10, 1), "yyyy-mm-dd")는 문자열 "2026-10-01"을 만듭니다. yyyy는 네 자리 연도, mm은 두 자리 월, dd는 두 자리 일입니다. DateSerial은 날짜를 만드는 보조 함수이고 Format은 그 날짜를 글자로 표현합니다.
같은 날짜를 "yyyy년 m월 d일"로 표현하면 "2026년 10월 1일"처럼 한 자리 일에는 앞의 0을 붙이지 않습니다. m과 d는 필요한 숫자만, mm과 dd는 두 자리 표시로 구별하면 됩니다. 날짜 순서나 값 자체를 바꾸는 계산이 아닙니다.
이 글의 날짜 예제는 그레고리력 설정을 전제로 합니다. 날짜 구분 기호 /와 월·요일 이름 등은 지역 설정의 영향을 받을 수 있으므로 화면에 보인 한 가지 모양을 모든 환경의 고정 출력이라고 외우지 마세요.
시간 형식: 분은 n 또는 nn으로 기억하세요
시간 구분 기호가 콜론인 환경에서 Format(TimeSerial(9, 4, 5), "hh:nn:ss")는 "09:04:05"입니다. hh는 시, nn은 분, ss는 초를 두 자리로 표현합니다. 날짜의 mm은 월, 시간의 nn은 분으로 묶어 기억하면 식을 읽기 쉽습니다.
Format의 m 또는 mm은 기본적으로 월이지만 h 또는 hh 바로 뒤의 시간 표시 문맥에서는 분을 뜻합니다. 따라서 "hh:mm:ss"의 mm을 무조건 월이라고 지우면 안 됩니다. 분을 직접 지정하는 n·nn을 먼저 기억하고 m·mm은 앞의 시 기호까지 확인하세요.
DateAdd·DateDiff의 interval에서 m은 월, n은 분이라는 규칙과 Format의 표시 문자열은 구분해야 합니다. 날짜를 이동하는 단위인지, 날짜와 시간을 보여주는 기호인지 먼저 보세요. 시간 구분 기호 : 역시 지역 설정에 따라 표시가 달라질 수 있습니다.
숫자 형식: 0과 #은 빈 자리에서 갈립니다
Format(7, "0000")는 "0007", Format(7, "####")는 "7"입니다. 두 식 모두 네 개의 자리 표시 기호가 있지만 0은 없는 자리도 0으로 채우고 #은 그 자리에 불필요한 0을 넣지 않습니다.
소수 구분 기호가 점인 환경에서 Format(12.3, "0.00")는 "12.30"입니다. 소수점 뒤의 0 두 개가 두 자리 표시를 요구하므로 마지막 0을 붙입니다. 문제에 자리수 유지가 있다면 0을, 필요 없는 0을 생략하라는 조건이 있다면 #을 살펴보세요.
자리 표시 기호의 개수가 원래 정수부의 최대 길이라는 뜻은 아닙니다. 예를 들어 Format(12345, "0000")도 "12345"처럼 모든 정수부 숫자를 표시합니다. 네 자리를 넘었다고 앞 숫자를 잘라낸다는 보기는 잘못입니다.
쉼표와 소수점: 표시 자릿수와 원본을 분리하세요
소수점이 점이고 천 단위 구분이 쉼표인 환경에서 Format(1234.5, "#,##0.00")는 "1,234.50"입니다. 그룹 구분과 소수 두 자리 표시를 함께 지정한 식입니다. 여기의 쉼표는 함수의 인수 구분 쉼표가 아니라 따옴표 안의 표시 기호입니다.
Format(12.346, "0.00")는 같은 환경에서 문자열 "12.35"를 만듭니다. 표시 자릿수에 맞춰 반올림된 결과를 얻지만 원래 값 12.346을 저장한 필드가 저절로 12.35로 갱신되는 것은 아닙니다. 원본 계산과 출력용 문자열은 별개입니다.
숫자 구분 기호는 Windows 지역 설정을 따를 수 있습니다. 시험 지문의 환경과 요구 표시를 우선하고, 자신의 컴퓨터에서 다른 기호가 보이면 원본 숫자가 달라졌다고 판단하기 전에 지역 설정을 확인하세요.
백분율: 0.25와 25를 같은 비율로 읽지 마세요
Format(0.25, "0%")의 결과는 "25%"입니다. 백분율 표시 기호는 값을 100배 한 모양에 %를 붙입니다. 따라서 Format(25, "0%")는 "2500%"가 됩니다. 25를 넣으면 항상 25%가 나온다고 외우면 원본 비율을 혼동합니다.
값그대·모양만을 다시 적용하세요. 0.25를 백분율로 표시해도 원래 필드값은 0.25입니다. 표시된 25%를 보고 원본이 숫자 25로 변했다고 설명한 보기는 지울 수 있습니다. 반대로 함수 결과 "25%" 자체는 출력용 문자열입니다.
형식 속성: 숫자 계산을 유지하면서 표시하기
테이블 필드나 폼·보고서 텍스트 상자의 형식 속성(Format)은 보이거나 인쇄되는 모양을 설정합니다. 금액 필드에 소수 두 자리 형식을 지정해도 저장 자료형이 텍스트로 바뀌지 않습니다. 숫자 계산을 유지하면서 화면만 맞추려는 조건이라면 이 차이가 중요합니다.
원본이 12.346일 때 형식 속성으로 화면에 12.35를 보이게 하는 것과 Format 함수로 문자열 "12.35"를 얻는 것은 다릅니다. 전자는 표시 설정이고 후자는 새 식의 반환값입니다. 형식 속성에 문자열을 입력한다는 사실도 원본 데이터가 문자열이라는 뜻은 아닙니다.
형식 속성은 입력값을 검증하는 모든 규칙을 대신하지 않습니다. 입력 모양을 제한하는 입력 마스크나 허용값을 검사하는 유효성 검사와 구분하세요. 지문이 출력 모양을 요구하는지 입력 제한을 요구하는지 먼저 표시해 두면 속성을 잘못 고르는 일이 줄어듭니다.
쿼리와 폼의 식: 출력용 열인지 원본인지 확인합니다
쿼리 디자인의 계산 필드에 출력일: Format([주문일], "yyyy-mm-dd")를 쓰면 출력일이라는 문자열 결과 열을 만듭니다. 주문일은 기존 날짜 필드이고 출력일은 그 날짜를 표현한 별도 결과입니다. 별칭을 만들었다는 이유만으로 주문일 자료형이 바뀌지 않습니다.
텍스트 상자의 컨트롤 원본에 =Format([금액], "#,##0.00")를 쓰면 계산 결과 문자열을 표시합니다. 반면 숫자 필드를 바인딩한 텍스트 상자의 형식 속성에 #,##0.00을 지정하면 표시 형식만 바꿉니다. 조건에 함수 사용이 명시되어 있는지도 확인하세요.
날짜 순서 비교, 금액 합계, 숫자 크기 정렬에는 원래 날짜·숫자 값을 기준으로 판단하세요. 표시 문자열을 정렬하면 숫자 크기와 다른 순서가 될 수 있습니다. 모든 환경에서 자동 형 변환이 원하는 계산을 해 줄 것이라고 기대하지 않는 것이 좋습니다.
형식 구간과 조건부 서식은 같은 기능이 아닙니다
숫자의 사용자 지정 형식에는 세미콜론으로 구간을 나누어 양수·음수·0 등의 표시를 다르게 정하는 방식도 있습니다. 예를 들어 0;(0);0은 음수를 괄호로 표시하는 규칙을 담습니다. 따라서 Format에는 값에 따른 표시 구분이 전혀 없다고 설명하면 정확하지 않습니다.
다만 점수가 기준 이하일 때 배경색을 바꾸거나 다른 필드를 비교해 컨트롤을 강조하는 조건부 서식 기능과 Format 함수는 구별해야 합니다. 함수는 형식화한 문자열을 반환하고, 조건부 서식은 조건과 시각적 강조 규칙을 설정합니다.
Null을 0과 같은 값으로 취급하지도 마세요. 형식 속성의 구간 설명을 보고 함수의 Null 처리까지 무조건 같다고 추정하면 안 됩니다. 빈 값 검사와 대체는 별도의 IsNull·Nz 가이드에서 확인하고 이 글에서는 표시와 계산의 경계만 잡으세요.
실전 풀이 순서: 대상, 기호, 결과 자료형
첫째, 지문이 함수 식을 요구하는지 필드·컨트롤의 형식 속성을 요구하는지 구별합니다. 둘째, 따옴표 밖 원본 값과 따옴표 안 표시 기호를 나눕니다. 셋째, 날짜·시간·숫자·백분율 가운데 어느 모양인지 정합니다.
넷째, m·mm의 시 기호 문맥과 0·#의 빈 자리를 확인합니다. 다섯째, 최종 답이 표시 문자열인지 원래 숫자·날짜 값인지 적습니다. 틀린 식은 정답을 통째로 외우기보다 잘못된 기호 하나를 고쳐 다시 읽어보세요.
연습할 때는 값 7, 시간 9시 4분 5초, 비율 0.25처럼 구분이 잘 드러나는 입력을 쓰세요. 값 1234처럼 빈 자리가 없는 입력만 보면 0000과 ####의 차이를 놓칠 수 있습니다. 차이가 나타나는 예제를 골라야 셀프 체크가 됩니다.
시험 직전 다섯 줄 요약
1. 값그대·모양만: 원래 필드는 그대로, Format 함수의 새 결과는 문자열입니다.
2. 날짜 yyyy-mm-dd, 시간 hh:nn:ss: 월과 분을 먼저 분리하고 m의 시 기호 문맥도 확인합니다.
3. 0은 부족한 자리까지 채우고 #은 불필요한 0을 붙이지 않습니다.
4. 백분율은 0.25 -> 25%이며 25 -> 2500%입니다. 표시와 원본 비율을 혼동하지 마세요.
5. 형식 속성은 저장 자료형을 유지합니다. 함수의 반환값이나 입력 제한 기능과 구별하세요.
30초 셀프 체크: 식을 보고 먼저 답하세요
1. 질문: Format(7, "0000")의 결과는 숫자 7인가요? 정답: 아닙니다. 문자열 "0007"입니다.
2. 질문: Format(7, "####")도 "0007"인가요? 정답: 아닙니다. 문자열 "7"이며 #은 빈 자리에 0을 추가하지 않습니다.
3. 질문: yyyy-mm-dd의 mm과 hh:mm:ss의 mm은 같은 뜻인가요? 정답: 아닙니다. 앞 식은 월, 뒤 식은 h·hh 뒤의 시간 문맥이므로 분입니다.
4. 질문: 분을 두 자리로 명확히 지정하는 기호는 무엇인가요? 정답: nn입니다. hh:nn:ss로 시·분·초를 구분합니다.
5. 질문: Format(0.25, "0%")와 Format(25, "0%")의 결과는 같나요? 정답: 아닙니다. 각각 "25%"와 "2500%"입니다.
6. 질문: 숫자 필드의 형식 속성을 소수 두 자리로 바꾸면 저장값도 두 자리로 갱신되나요? 정답: 아닙니다. 형식 속성은 표시만 바꿉니다.
7. 질문: 출력일: Format([주문일], "yyyy-mm-dd")의 출력일은 날짜 계산용 원본 필드인가요? 정답: 아닙니다. 날짜를 형식화한 문자열 결과 열입니다.
확인한 공식 자료와 예제 전제
Format 함수의 반환 자료형과 쿼리·컨트롤 원본에서의 사용은 Microsoft Support의 Format Function, m·n과 숫자 자리 기호는 Microsoft Learn의 VBA Format 문서를 확인했습니다. 필드와 텍스트 상자의 표시 방식은 날짜·숫자 형식 및 TextBox.Format 문서를 기준으로 정리했습니다.
조건부 서식과 표시 함수의 차이는 Microsoft의 보고서 안내를 대조했습니다. 아래 근거 링크에서 각 기능을 직접 확인할 수 있습니다. 이 글은 전체 기능 목록이나 주차 번호 계산을 다루는 문서가 아니라 컴활 문제의 표시 결과를 구별하기 위한 학습 요약입니다.
확인일은 2026-10-01입니다. 날짜 예제는 그레고리력, 숫자 예제는 점 소수점·쉼표 천 단위, 시간 예제는 콜론 구분을 전제로 작성했습니다. 예제는 공식 명세에 따른 학습용 해설이며 이 발행 작업에서 실제 Access 프로그램의 실행 결과를 수집한 것은 아닙니다.