AI에 Excel 수식·VBA를 요청하기 전 200000과 미완료 두 행 검산하기

AI에게 Excel 수식이나 VBA를 요청할 때는 '매출을 알아서 계산해 줘'보다 입력 범위와 예상 결과를 먼저 정하는 편이 오류를 찾기 쉽습니다. 여기서는 8월 서울 매출 200,000을 구하는 수식 하나와, 세 작업 중 미완료 두 행을 새 시트로 복사하는 코드 하나를 같은 첨부에 담았습니다.

아래 요청문과 코드는 직접 작성한 예제입니다. 실제 AI 응답을 받아 성공한 사례가 아니며 Microsoft Excel 또는 VBA 실행도 확인하지 않았습니다. 수식은 LibreOffice 사본으로 재계산했고, 행 선택 규칙은 Python 참조 검사로 검산했습니다. 이 두 검사는 Excel 매크로의 실행 안전성이나 화면 동작을 증명하지 않습니다.

8월 서울 매출 200000과 진행·대기 작업 두 행의 서로 다른 과제
설명용 도해: 네 매출 행의 월·지점 조건과 세 작업의 복사 조건을 먼저 고정하는 설명 도식

수식 요청에는 네 행과 두 조건을 함께 적기

  1. 첨부 파일을 열고 매출 시트를 확인합니다. A1:C5는 아래 가상 자료입니다. A열은 날짜 값이고 C열은 숫자입니다. 가상 입력은 E2=2026-08-01, F2=서울입니다. 월을 '8월' 문자열로만 전달하지 않고 기준 날짜를 둡니다.

거래일 지점 매출
2026-08-01 서울 120000
2026-08-07 부산 90000
2026-08-19 서울 80000
2026-09-02 서울 70000

formula-request.txt에는 범위 A2:C5, 기준월 E2, 지점 F2, 기대값 200000을 명시했습니다. 반환받을 것은 설명 없는 정답 선언이 아니라 수식과 각 조건의 뜻입니다. 이를 직접 검토할 기준 수식은 다음과 같습니다.

=SUMIFS($C$2:$C$5,$A$2:$A$5,">="&$E$2,$A$2:$A$5,"<"&EDATE($E$2,1),$B$2:$B$5,$F$2)

SUMIFS는 여러 조건에 맞는 값을 합산합니다. SUMIFS function | Microsoft Support 첫 날짜 조건은 8월 1일 이상, 두 번째는 다음 달 1일 미만입니다. EDATE는 시작 날짜에서 지정한 개월 수만큼 이동한 날짜의 일련번호를 반환합니다. EDATE function | Microsoft Support 여기서는 E2가 월의 첫날이라는 전제가 있으므로 1개월을 더하면 9월 1일 경계가 됩니다.

서울의 120000과 80000만 포함되어 G2는 200000입니다. 부산 90000과 9월 서울 70000은 제외합니다. 전체 합계 360000이 나왔다면 조건이 빠졌는지, 270000이면 다음 달 서울 거래까지 포함했는지 확인합니다. E2를 월 중간 날짜로 바꾸면 더 이상 해당 달 전체를 뜻하지 않으므로 기준월 입력부터 복구해야 합니다.

한 번 맞는 수식보다 경계를 바꿔 보는 검사

  1. F2를 선택해 부산을 입력합니다. 기대값은 90000입니다. 계속 200000이면 수식이 F2를 참조하지 않고 서울을 하드코딩했는지 봅니다. 검사가 끝나면 F2를 서울로 돌립니다.

  1. 두 번째 가상 반례는 80000 거래의 날짜 A4를 2026-09-01로 옮기는 것입니다. 조건이 다음 달 1일 미만이므로 그 행은 제외되어 120000이 남아야 합니다. 가상 날짜를 2026-08-19로 복구하면 200000으로 돌아옵니다. 9월 1일을 포함하는 <= 조건으로 바꾸어 기대값을 억지로 맞추지 않습니다.

실제 자료에서는 날짜처럼 보이는 텍스트와 숫자 금액인지도 확인해야 합니다. 첨부 CSV의 Python 검사는 날짜를 ISO 형식으로 읽고 정수 금액을 명시적으로 변환합니다. Excel의 가져오기 옵션이나 지역 설정을 대신 실행하는 기능은 아닙니다.

VBA 요청은 복사 대상보다 원본 보호를 먼저 정하기

두 번째 과제의 입력은 원본 시트 A1:C4입니다. 매출 표와 별개의 작은 작업 목록입니다. 완료 행을 원본에서 삭제하는 작업이 아니라, 진행·대기 행만 새 미완료 시트에 복사하는 작업으로 범위를 제한합니다.

작업명 상태 담당
월간 보고서 완료 민수
비용 정산 진행 지수
파일 백업 대기 서준

예상 결과는 머리글과 비용 정산·파일 백업 두 행입니다. 원본 세 행은 그대로 남아야 합니다. 미완료 시트가 이미 있다면 덮어쓰지 않고 중단합니다. 네 번째 데이터 행, 빈 담당자, 수식·오류값, '진행중'처럼 정하지 않은 상태도 이 고정 예제에서는 중단 대상입니다.

첨부 vba-request.txt는 이러한 조건과 실패 시 동작을 함께 요구합니다. 원본을 지우거나 결과 시트를 매번 삭제하는 코드는 요청하지 않습니다. 기존 결과가 있는 상황을 처리하려면 먼저 그 결과를 비교하고 별도 파일로 보관하는 절차를 정해야 합니다.

원본 세 행을 보존하고 미완료 두 행을 새 시트로 복사하는 코드 설계
설명용 도해: 입력 검사 뒤 새 시트에 쓰고 기존 결과 또는 오류에서는 중단하는 기대 흐름

제공한 코드가 수행하도록 작성된 순서

전체 코드는 CopyIncompleteRows.txt에 있습니다. XLSX 안에는 매크로가 들어 있지 않습니다. 실제로 시험하려면 별도 사본을 매크로 사용 통합 문서로 저장하고 코드와 보안 정책을 검토한 뒤 실행해야 합니다. 출처를 검토하지 않은 매크로를 허용하라는 안내가 아닙니다.

코드는 먼저 원본 시트와 A:C의 마지막 행, 머리글, 데이터 타입과 허용 상태를 검사합니다. 출력할 행을 배열에 모은 다음에만 새 시트를 만듭니다. 데이터를 쓸 때 사용하는 핵심 부분은 아래와 같습니다.

Set dst = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
dst.Name = "미완료"
dst.Range("A1").Resize(n + 1, 3).NumberFormat = "@"
dst.Range("A1").Resize(n + 1, 3).Value2 = result

Range.Value2는 셀 값을 읽거나 설정하는 속성입니다. Range.Value2 property (Excel) 원본 범위의 값을 읽어 만든 배열을 새 범위에 쓰도록 작성했으며, 원본 셀을 지우는 명령이나 기존 시트 삭제 명령은 넣지 않았습니다. 다만 Excel의 이벤트 코드, 통합 문서 보호, 이름 충돌, 메모리 오류까지 실행 검증한 것은 아닙니다.

새 시트를 만든 뒤 이름 지정이나 값 쓰기가 실패하면 빈 시트 또는 부분 결과가 남을 수 있습니다. 오류 처리기는 이를 자동 삭제하지 않고 확인을 요청합니다. '실패했으니 처음 상태로 완전히 돌아갔다'고 가정하지 말고 새 시트와 원본을 직접 비교하세요. 미완료 시트가 남았다면 다음 실행은 기존 결과 검사에서 중단됩니다.

실행 전 참조 검사와 실행 후 확인을 구분하기

ZIP 폴더의 python3 verify_examples.py는 CSV에서 8월 서울 합계 200000과 미완료 두 행을 계산합니다. python3 -m unittest -v test_examples.py는 다른 지점·다음 달 경계·알 수 없는 상태·빈 입력·이미 있는 결과·행 수 변경을 검사합니다. Python이 VBA를 번역하거나 실행하는 것은 아닙니다.

VBA를 실제 Excel 사본에서 시험했다면 원본 A1:C4가 바뀌지 않았는지, 미완료 A1:C3이 기대한 두 행인지, 다시 실행할 때 기존 결과를 덮어쓰지 않고 중단하는지 확인해야 합니다. 이 실험의 원본은 짧고 고정되어 있으므로 전후 값을 직접 비교할 수 있습니다. 실제 업무의 병합 셀, 숨긴 열, 수천 행, 다른 매크로가 있는 파일은 별도의 테스트 대상입니다.

지점·다음 달 첫날을 바꾼 기대값과 고정 작업 목록의 중단 조건
설명용 도해: 90000·120000·200000의 참조 계산과 실제 Excel·VBA 실행 검증을 구분한 도식

AI에 요청할 문장은 입력과 경계가 정해진 뒤에 작성합니다. 이 예제의 검토 기준은 '수식이 길지 않다' 또는 '코드가 그럴듯하다'가 아니라 200000·90000·120000이라는 조건별 값과, 원본 보존·두 행 복사·재실행 중단이라는 구체적 동작입니다. 검증하지 않은 Excel 실행 결과는 코드와 계산 자료가 있어도 확인된 사실로 적지 않습니다.

공식 출처와 확인일

SUMIFS function | Microsoft Support

EDATE function | Microsoft Support

Range.Value2 property (Excel)

출처 원문 수집일: S1 2026-09-24; S2 2026-09-24; S3 2026-09-24.

작성자 소개