vlookup #N/A 에러가 나오는 경우 IF문은 어떻게....

VBA
작성자
툴잇지 with 우정기기
작성일
2021-11-29 18:07
조회
1785
엑셀버전 : 엑셀2019

운영체제 : 윈도우10

실무에서 VBA로 프로그램을 하나 만들었습니다.

매입리스트를 쭉 적고 결제전에 입금해줘야 할 업체들별로 합계금액을 리스트로 만드는 프로그램입니다. (은행계좌리스트)

결제는 아시겠지만 전월 15일/30일 마감이 있고 해당월 15일/30일 마감이 있습니다. 입금도 15,30일로 나뉘겠죠.

여기까지는 분기로 구분은 하였는데 문제는 vlookup을 사용하면 on error resume next때문에 if문이 그냥 실행되고 어떤건 건너뛰고 난리도 아니네요....

한쪽 sheet에는 업체명과 마감,결제일을 표기하여 저장하고있으며, 매입장부와 업체 마감/결제일 리스트랑 vlookup하여 은행과 계좌, 금액을 리스트업 해야합니다.

아래는 제가 짠 코드입니다.

 

lastRowCop = Workbooks(bookName).Sheets("결제업체정보").Cells(Rows.Count, 1).End(xlUp).Row
 
    For i = 2 To lastRowCop
        Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) = Replace(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), " ", "")
        Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) = Replace(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), "(주)", "")
        Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) = Replace(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), "㈜", "")
        Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) = Replace(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), "주식회사", "")
        Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) = Replace(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), "C&L", "")
        If Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) Like "*삼송테크노*" Then
            Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1) = "삼송테크노관리비"
        End If
    Next i
 
    Workbooks(bookName).Sheets("결제업체정보").Range("A2:D" & lastRowCop).Sort key1:=Workbooks(bookName).Sheets("결제업체정보").Cells(2, 2), order1:=xlAscending, _
                                                                                key2:=Workbooks(bookName).Sheets("결제업체정보").Cells(2, 3), order2:=xlAscending, _
                                                                                key3:=Workbooks(bookName).Sheets("결제업체정보").Cells(2, 1), order3:=xlAscending
    For i = 2 To lastRowCop
 
        On Error Resume Next
        'Err.Clear
 
    tmp = Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Range("B5:H" & lastRow), 7, 0)
 
    If Err.Number = 0 Then
 
        If Workbooks(bookName).Sheets("결제업체정보").Cells(i, 2) = "15" And Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("E")) <> 0 _
                                                                    And Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Range("B5:H" & lastRow), 7, 0) _
                                                                                , "dd") < 16 Then
                Workbooks(bookName).Sheets("15일").Cells(i_15, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                Workbooks(bookName).Sheets("15일").Cells(i_15, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("E")), "#,#")
                i_15 = i_15 + 1
        ElseIf Workbooks(bookName).Sheets("결제업체정보").Cells(i, 2) = "30" And Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("E")) <> 0 _
                                                                    And Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Range("B5:H" & lastRow), 7, 0) _
                                                                                , "dd") > 27 Then
                Workbooks(bookName).Sheets("30일").Cells(i_30, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                Workbooks(bookName).Sheets("30일").Cells(i_30, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum & "월").Columns("E")), "#,#")
                i_30 = i_30 + 1
        End If
    End If
    Next i
    For i = 2 To lastRowCop
 
        On Error Resume Next
    'Err.Clear
    tmp = Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Range("B5:H" & lastRow), 7, 0)
 
    If Err.Number = 0 Then
        If Workbooks(bookName).Sheets("결제업체정보").Cells(i, 2) = "1530" And Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")) <> 0 Then
                If Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Range("B5:H" & lastRowTmp), 7, 0) _
                                                                                , "dd") > 27 Then
                    Workbooks(bookName).Sheets("30일").Cells(i_30, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                    Workbooks(bookName).Sheets("30일").Cells(i_30, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")), "#,#")
                    i_30 = i_30 + 1
                ElseIf Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Range("B5:H" & lastRowTmp), 7, 0) _
                                                                                , "dd") < 16 Then
                    Workbooks(bookName).Sheets("15일").Cells(i_15, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                    Workbooks(bookName).Sheets("15일").Cells(i_15, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")), "#,#")
                    i_15 = i_15 + 1
                End If
        ElseIf Workbooks(bookName).Sheets("결제업체정보").Cells(i, 2) = "3030" And Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")) <> 0 _
                                                                    And Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Range("B5:H" & lastRowTmp), 7, 0) _
                                                                                , "dd") > 27 Then
 
                Workbooks(bookName).Sheets("30일").Cells(i_30, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                Workbooks(bookName).Sheets("30일").Cells(i_30, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")), "#,#")
                i_30 = i_30 + 1
        ElseIf Workbooks(bookName).Sheets("결제업체정보").Cells(i, 2) = "1" And Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                    Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")) <> 0 Then
                If Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Range("B5:H" & lastRowTmp), 7, 0) _
                                                                                , "dd") > 27 Then
                    Workbooks(bookName).Sheets("30일").Cells(i_30, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                    Workbooks(bookName).Sheets("30일").Cells(i_30, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")), "#,#")
                    i_30 = i_30 + 1
                ElseIf Format(Workbooks(bookName).Application.WorksheetFunction.VLookup(Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                                Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Range("B5:H" & lastRowTmp), 7, 0) _
                                                                                , "dd") < 16 Then
                    Workbooks(bookName).Sheets("15일").Cells(i_15, 1) = Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1)
                    Workbooks(bookName).Sheets("15일").Cells(i_15, 2) = Format(Workbooks(bookName).Application.WorksheetFunction.SumIf(Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("B"), Workbooks(bookName).Sheets("결제업체정보").Cells(i, 1), _
                                                                        Workbooks(yearNum & "년 매입현황.xlsx").Sheets(monthNum + 1 & "월").Columns("E")), "#,#")
                    i_15 = i_15 + 1
                End If
        End If
    End If
    Next i

매입장부이다보니 거래를 안하는 업체가 생길수도 있어 문제입니다...(vlookup #N/A문제)

 

여러분들의 답변 기다리고 있겠습니다.

감사합니다.

신고
스크랩
공유
전체 2

  • 2021-11-29 20:39
    채택된 답변

    @툴잇지 with 우정기기 님 On Error Resume Next 대신 If 문으로 오류 처리하면 되지 않나요?

    If Appliction.WorkSheetFunction.CountIF(매입장부범위,거래처명) > 0 Then

    으로 조건 걸면 될 듯 합니다


    • 2021-11-30 08:17

      @엑셀은즐거워 님 아.... 아직 vba초보다보니 countif함수를 몰랐네요. 한번 써보도록 하겠습니다.!

      감사합니다.


전체 18,532
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (315)
오빠두엑셀 | 2022.02.03 | 추천 575 | 조회 609701
오빠두엑셀 2022.02.03 575 609701
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 310 | 조회 35541
오빠두엑셀 2021.10.28 310 35541
78582 함수/공식
New 조건 함수 의 관한 문의 엑셀파일첨부파일 (4) 답변완료
예쁜나야 | 15:46 | 추천 0 | 조회 35
예쁜나야 15:46 - 35
78580
New 날짜와 시간 분할 방법 알려 주세요 엑셀파일첨부파일 (1)
계양산 지기 | 15:14 | 추천 0 | 조회 25
계양산 지기 15:14 - 25
78575 VBA
New 엑셀 재고관리 프로그램 문의드립니다.. 첨부파일 (1)
SJ | 04:23 | 추천 0 | 조회 65
SJ 04:23 - 65
78570 대시보드
New 대시보드에 표 형식으로 표현도 가능한가요? 첨부파일 (2)
룰루랄라 | 2025.05.12 | 추천 0 | 조회 66
룰루랄라 2025.05.12 - 66
78569 함수/공식
New 서로 다른 양식의 견적서 엑셀 파일 한곳에 정리 하기 (5)
gh**** | 2025.05.12 | 추천 0 | 조회 95
gh**** 2025.05.12 - 95
78565 함수/공식
New 검색보고서 만들기 질문드립니다. 엑셀파일 (9) 답변완료
만식이햄 | 2025.05.12 | 추천 0 | 조회 82
만식이햄 2025.05.12 - 82
78563 VBA
New VBA 수정 부탁드립니다. ㅠ (3)
서비 | 2025.05.12 | 추천 0 | 조회 73
서비 2025.05.12 - 73
78560 함수/공식
New 어떻게 내용을 가져올수 있을지 고수님들의 해결방법들을 공유 받고 싶습니다!!.... 엑셀파일첨부파일 (2)
꾸르형 | 2025.05.12 | 추천 0 | 조회 43
꾸르형 2025.05.12 - 43
78559 파워쿼리/피벗
New 엑셀 자동화 질문 입니다... 엑셀파일 (2) 답변완료
안녕하세여11 | 2025.05.12 | 추천 0 | 조회 65
안녕하세여11 2025.05.12 - 65
78555 함수/공식
New 시트에서 원하는 열의 자료만 가져오고싶은데 아무리 해도 수식오류가 나서 도움을 구하고자 합니다 엑셀파일 (4) 답변완료
khs**** | 2025.05.12 | 추천 0 | 조회 41
khs**** 2025.05.12 - 41
78554 함수/공식
New 변동하는 절대참조값 적용 (6) 답변완료
화이또! | 2025.05.12 | 추천 0 | 조회 64
화이또! 2025.05.12 - 64
78553 대시보드
New 대시보드_슬라이서 자동으로 눌러지게 하는방법 첨부파일 (1)
검도림 | 2025.05.12 | 추천 0 | 조회 46
검도림 2025.05.12 - 46
78548 대시보드
New 어떤 엑셀을 적용해야하는 지 문의드립니다! (1)
룰루랄라 | 2025.05.11 | 추천 0 | 조회 64
룰루랄라 2025.05.11 - 64
78546 함수/공식
New 월별 매출액 자동입력할 수 있는 방법 또는 함수 궁금합니다! 엑셀파일 (2)
mmm1010 | 2025.05.11 | 추천 0 | 조회 84
mmm1010 2025.05.11 - 84
78544 함수/공식
New 중복값 제거 함수에 관하여 엑셀파일첨부파일 (1) 답변완료
김지훈(Derek) | 2025.05.11 | 추천 0 | 조회 74
김지훈(Derek) 2025.05.11 - 74
78543 함수/공식
New 데이터 추출 및 정렬관련 초보질문 엑셀파일첨부파일 (5) 답변완료
김지훈(Derek) | 2025.05.11 | 추천 0 | 조회 67
김지훈(Derek) 2025.05.11 - 67
78540 함수/공식
New 오빠두LIVE 219회 - 엑셀 '셀 병합' 자동화 보고서 만들기 오빠두엑셀님의 방법이 궁금합니다. 첨부파일
AURIC | 2025.05.10 | 추천 0 | 조회 57
AURIC 2025.05.10 - 57
78536 함수/공식
New 월별로 금액적용후 최종월에 차액을 가감 함수가 필요해요 엑셀파일 (1) 답변완료
낮은자 | 2025.05.10 | 추천 0 | 조회 62
낮은자 2025.05.10 - 62
78535 기능/도구
New 엑셀로 25x25 인쇄가 가능한가요? (1)
망나 | 2025.05.10 | 추천 0 | 조회 47
망나 2025.05.10 - 47
78534 파워쿼리/피벗
New 쿼리에 함수 적용한 열 추가 시 24:00:00 활용한 계산 함수 필요할 때. 첨부파일 (2) 답변완료
신노스케 | 2025.05.10 | 추천 0 | 조회 61
신노스케 2025.05.10 - 61
78531 차트/그래프
New 엑셀 차트 데이터테이블 엑셀파일첨부파일 (1)
| 2025.05.09 | 추천 0 | 조회 72
2025.05.09 - 72
78530 구글시트
New 구글 스프레드시트 함수 관련 질문입니다. 엑셀파일첨부파일 (2)
동그이 | 2025.05.09 | 추천 0 | 조회 61
동그이 2025.05.09 - 61
78528 구글시트
New 구글 스프레드시트를 외부 엑셀 파일과 연동하는 방법이 궁금합니다. (3)
머우터덩 | 2025.05.09 | 추천 0 | 조회 65
머우터덩 2025.05.09 - 65
78525 문서서식
New 업무가 진행이 안 될 정도로, 해당 파일이 느립니다! 엑셀파일 (2)
빌스택스 | 2025.05.09 | 추천 0 | 조회 89
빌스택스 2025.05.09 - 89
78520 기능/도구
New 하이퍼링크 명칭 해제 (1)
min | 2025.05.09 | 추천 0 | 조회 49
min 2025.05.09 - 49
78518 피벗테이블
New 피벗테이블 관련 화살표 질문 첨부파일
이모비니 | 2025.05.09 | 추천 0 | 조회 47
이모비니 2025.05.09 - 47
78516 함수/공식
New 호봉산정 엑셀 문의드립니다. 엑셀파일첨부파일 (2) 답변완료
아르카디안 | 2025.05.08 | 추천 0 | 조회 55
아르카디안 2025.05.08 - 55
78515 함수/공식
New 엑셀 질문 드립니다.ㅠ.ㅠ 첨부파일 (1)
숲의사제 | 2025.05.08 | 추천 0 | 조회 52
숲의사제 2025.05.08 - 52
78511 함수/공식
New 입사일자로 부터 매년 알림 (2)
국빱 | 2025.05.08 | 추천 0 | 조회 66
국빱 2025.05.08 - 66
78510 문서서식
New 조건부 서식 적용 문의 엑셀파일첨부파일 (2) 답변완료
장수벌레 | 2025.05.08 | 추천 0 | 조회 99
장수벌레 2025.05.08 - 99