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

VBA
작성자
툴잇지 with 우정기기
작성일
2021-11-29 18:07
조회
162
엑셀버전 : 엑셀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

    On Error Resume Next 대신 If 문으로 오류 처리하면 되지 않나요?

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

    으로 조건 걸면 될 듯 합니다


    • 2021-11-30 08:17

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

      감사합니다.


전체 5,151
번호 카테고리 제목 작성자 작성일 추천 조회
알림
하루 딱 "1분", 진짜 쓰는 엑셀 꿀팁 👉 "오빠두엑셀" 인스타그램 오픈! (28)
트로피 오빠두엑셀 | 2021.10.12 | 추천 22 | 조회 770
트로피 오빠두엑셀 2021.10.12 22 770
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (21)
오빠두엑셀 | 2021.10.28 | 추천 28 | 조회 2402
트로피 오빠두엑셀 2021.10.28 28 2402
26146 VBA
New 텍스트 1 행씩 자동입력 및 표 2개 합치는 방법 첨부파일 (1)
마운틴 | 02:38 | 추천 0 | 조회 17
마운틴 02:38 0 17
26144 함수/공식
New now()함수로 얻은 최초의 시간을 상수로 사용하고 싶습니다. (1)
SAFETY.RKTL | 01:09 | 추천 0 | 조회 17
SAFETY.RKTL 01:09 0 17
26143 VBA
New 엑셀 타이머 종료시 알림음 출력 가능한가요? 첨부파일 (1)
을지지뢰 | 00:59 | 추천 0 | 조회 16
을지지뢰 00:59 0 16
26141 함수/공식
New 다중 유효성검사 수식관련문의 첨부파일
hyun944@naver.com | 00:25 | 추천 1 | 조회 16
hyun944@naver.com 00:25 1 16
26135 함수/공식
New 필터 기능 대체 함수 첨부파일
sio**** | 2022.01.19 | 추천 -1 | 조회 23
sio**** 2022.01.19 -1 23
26126 VBA
New 엑셀 타이머 런타임 오류해결 좀 부탁드립니다. 첨부파일 (2) 답변완료
을지지뢰 | 2022.01.19 | 추천 0 | 조회 39
을지지뢰 2022.01.19 0 39
26122 함수/공식
New 불규칙한 숫자만큼 반복되는 데이터 입력 ,, 고수님들 도와주세요 ㅠ_ㅠ 첨부파일 (3)
응빙 | 2022.01.19 | 추천 0 | 조회 43
응빙 2022.01.19 0 43
26120 VBA
New 그림단추 구현 VBA 첨부파일 (3) 답변완료
007 | 2022.01.19 | 추천 0 | 조회 45
007 2022.01.19 0 45
26118 VBA
New VBA 고수 분들 보시면 제발 도와주세요. 첨부파일 (3)
new_hwan | 2022.01.19 | 추천 0 | 조회 45
new_hwan 2022.01.19 0 45
26113 기능/도구
New 자동필터 검색 누락 첨부파일 (6) 답변완료
김정열 | 2022.01.19 | 추천 0 | 조회 41
김정열 2022.01.19 0 41
26105 함수/공식
New "월"을 기입하면 전월 당월 매출이 나오게 하고싶은데 도와주세요 ㅠ (10) 답변완료
따뜻한아메리카노 | 2022.01.19 | 추천 0 | 조회 55
따뜻한아메리카노 2022.01.19 0 55
26104 VBA
New 자료찾기 vba 문의드립니다. (5) 답변완료
ㅈㄱㄹ | 2022.01.19 | 추천 0 | 조회 43
ㅈㄱㄹ 2022.01.19 0 43
26089 기능/도구
New 한 시트에 다수의 규칙이 적용되어있을 때 항목을 정리하는 방법을 찾고 있습니다. 첨부파일 (6) 답변완료
피단 | 2022.01.18 | 추천 0 | 조회 44
피단 2022.01.18 0 44
26087 함수/공식
New vlookup 관련? 같은 값일 때 그 행의 값을 불러오기 첨부파일 (3) 답변완료
키몽쓰 | 2022.01.18 | 추천 0 | 조회 70
키몽쓰 2022.01.18 0 70
26085 함수/공식
New 엑셀 함수 궁금해요! 첨부파일 (3)
양킴 | 2022.01.18 | 추천 0 | 조회 52
양킴 2022.01.18 0 52
26079 함수/공식
New 도와주세요 예전에 잠깐 본적이 있는 강의인데 못찾겠어요 (1)
딸기아빠 | 2022.01.18 | 추천 0 | 조회 38
딸기아빠 2022.01.18 0 38
26078 함수/공식
New sumif 오류 관련 첨부파일 (3)
논바닥 | 2022.01.18 | 추천 0 | 조회 37
논바닥 2022.01.18 0 37
26068 함수/공식
New 다른쉬트 값 불러 오기 (VLOOKUP 안될 시) 첨부파일 (3)
벗님들 | 2022.01.18 | 추천 -1 | 조회 67
벗님들 2022.01.18 -1 67
26067 함수/공식
New 도와주세요! 목록 별 수량 합산이 필요한데 가능한지 확인 부탁 드릴게요! 첨부파일 (10) 답변완료
monom | 2022.01.18 | 추천 0 | 조회 54
monom 2022.01.18 0 54
26058 기능/도구
New 자동필터 복사 범위 풀림 오류 (1)
허영진 | 2022.01.18 | 추천 0 | 조회 39
허영진 2022.01.18 0 39
26050 함수/공식
New 행과 열의 합의 함수를 알고 싶어요! (3)
Goldhajin | 2022.01.18 | 추천 1 | 조회 66
Goldhajin 2022.01.18 1 66
26041 VBA
New 일정시간이 지나면 MsgBOX로 알림창이 뜨게 하고싶습니다. (4) 답변완료
을지지뢰 | 2022.01.17 | 추천 0 | 조회 63
을지지뢰 2022.01.17 0 63
26035 함수/공식
New 특정날짜와 시간 고정해서 데이터 추출방법 도와주세요 (5)
박현욱 | 2022.01.17 | 추천 0 | 조회 48
박현욱 2022.01.17 0 48
26033 함수/공식
New 필터 함수를 인덱스 매치 함수로 변환하는 어려움 첨부파일 (4) 답변완료
미르 | 2022.01.17 | 추천 0 | 조회 41
미르 2022.01.17 0 41
26030 함수/공식
New 원본표에서 일정 조건의 내용을 추출하여 새로운 표에 자료 넣기 첨부파일 (2)
알면서 | 2022.01.17 | 추천 0 | 조회 39
알면서 2022.01.17 0 39
26029 기능/도구
New 필터에서 상하위 % 추출 안됨 오류 첨부파일 (3)
알면서 | 2022.01.17 | 추천 0 | 조회 26
알면서 2022.01.17 0 26
26026 함수/공식
New 한 셀에 입력된 문장 중 조건에 만족하는 문장 개수 함수 (5)
삐약이 | 2022.01.17 | 추천 0 | 조회 41
삐약이 2022.01.17 0 41
26025 기능/도구
New 셀 내용을 지우면 특정 셀 내용도 같이 삭제되는 기능? 첨부파일 (3) 답변완료
올리주인 | 2022.01.17 | 추천 1 | 조회 52
올리주인 2022.01.17 1 52
26023 VBA
New VBA 사용자정의폼 show 0 명령어 (1) 답변완료
병욱 | 2022.01.17 | 추천 0 | 조회 42
병욱 2022.01.17 0 42
26022 VBA
New 거래처별 파일 나누기 첨부파일
silli**** | 2022.01.17 | 추천 0 | 조회 44
silli**** 2022.01.17 0 44