안녕하세요 VBA중 Find 메서드 활용에 관한 질문입니다.

VBA
작성자
참치원양어선
작성일
2022-06-15 15:38
조회
86
엑셀버전 : 엑셀2016

운영체제 : 윈도우10

안녕하세요. 맨날 유튜브만 보다가 해결책이 막막해서 질문 드립니다.

회사 내 설치된 프로그램 계약 관리 기능이 매끄럽지 않아 사업별 계약내역 관리 자동화 매크로 작업 중입니다.

 

제가 시행하고자 하는 작업은

  1. C열의 계약명 중

2. B열의 사업명에 종속되는 계약이 있는지를 찾아서

(C열의 계약명은 대부분 B열의 사업명을 포함하고있습니다. 포함하고 있지 않다면 우리 사업이 아님)

3. D열에 A열에 있는 정식 사업명을 표시하는 구문을 만들고자 합니다.

최종적으로는 D열에 사업명을 표시 후 D열을 피벗 테이블 필터로 활용하여 사업별 계약내역을 관리할 계획입니다.

 

D2셀을 들어 구상하고 있는 작업 순서를 설명드리면(행값은 for 문 등으로 변수로 설정한다고 하고)

가. D2셀이 빈 값일 경우

나. C2셀(offset ,-1)에 적힌 계약이 B열에 있는 계약 중 어느 계약에 해당하는지 찾아서(계약명은 사업명을 포함하고 있음.)

다. D2셀에 A열에 있는 정식 사업명을 표시한 후

라. D3~D열 입력값 끝까지 동일한 작업을 반복 수행하는 것입니다.

D2셀이 공란인지 여부를 찾아서 D열 마지막 행값까지 반복 수행하는 건 for문으로 설정하면 간단한데

막히는 부분은 이를 위해서는 find 메서드를 활용해야 하는데, 단일한 값을 찾는 일반적인 FIND 메서드와 달리, B열의 범위가 Find 메서드의 검색 대상이 된다는 점과, for 문을 중복으로 활용하는 데 어려움을 겪고 있다는 점입니다. 여러 책이나 인터넷 사이트를 찾아봐도 배열에 대한 find 활용을 쉽게 설명해주는 곳이 없어서 질문드립니다... 고수 분들의 도움 부탁드리겠습니다.

 

전체 5

  • 2022-06-15 18:16
    채택된 답변

    @참치원양어선 님 매크로를 일정 정도 작성하실 줄 아시니까 크게 어렵지 않습니다.

    Sub Test()
        
        Dim rngB As Range, rngC As Range, c As Range, found As Range
        Dim strAddr As String
        
        Set rngB = [B:B].SpecialCells(2) '//B열 입력된 셀 범위
        Set rngC = [C:C].SpecialCells(2) '//C열 입력된 셀 범위
        
        For Each c In rngB
            Set found = rngC.Find(c, lookat:=2) '//부분일치 검색
            If Not found Is Nothing Then
                strAddr = found.Address                 '//다중 검색을 위해서 현재 찾은 위치를 담아둡니다.
                
                '//검색 결과가 있고 처음 찾은 위치와 같지 않으면 반복해서 찾습니다.
                Do
                    found.Next = c.Offset(, -1)            '//검색 결과가 있으면 원래의 계약명을 입력합니다.
                    Set found = rngC.FindNext(found)  '//다음 검색 결과가 있는지 찾습니다.
                Loop While Not found Is Nothing And strAddr <> found.Address
            End If
        Next c
        
    End Sub

    스크립트 이해에 도움이 되시라고 주석을 달아놨습니다. 자주 사용되는 메서드니 이후에도 잘 활용하실 수 있을 겁니다.

     


    • 2022-06-15 18:18

      D열에는 해당할 경우에만 값이 입력되고 수식이 들어있지 않으므로 그대로 피벗 테이블로 활용하시면 됩니다. 매크로 결과 화면도 참고하세요.

       

      오빠두_질문.jpg


  • 2022-06-15 16:38

    @참치원양어선 님 적용 수식을 수정하고, 적용된 그림을 다시 첨부합니다.

    화면-캡처-2022-06-15-163804.png


  • 2022-06-15 16:28

    @참치원양어선 님 제가 만들어 놓은 추가 기능이 있는데, 그걸 설치해 보시고 아래처럼 입력해 보세요.

    D2 = INDEX($A$2:$A$37,IF(FindSubstring(C2,$B$2:$B$37)>0,FindSubstring(C2,$B$2:$B$37),""))

    추가기능은 아래에서 다운로드 받을 수 있습니다.

    https://svetak.tistory.com/104

     


  • 2022-06-15 19:05

    두 분 정말 감사드립니다. 당장에 써야 될 내용이었는데 정말 큰 도움 되었습니다. 답변 채택되는 게 하나밖에 없다는 게 정말 아쉽네요. 두 분 올려주신 파일이 예시로 올린 파일에는 되고 원 파일엔 적용이 안되길래 뭔가 했더니 원본 파일은 수식이 걸려있어서 안되는 거여쓰.....ㅋㅋㅋㅋ

    혹시 여기 사이트 내 쪽지라든가 그런 기능이 있다면 쪽지 보내주시겠어요?? 돈없는 공노비라 큰 사례는 못드리지만 약소하게나마 간단한 커피 기프티콘이라도 보내드리고 싶습니다.


전체 6,863
번호 카테고리 제목 작성자 작성일 추천 조회
알림
📌 -- VBA 기초-활용 4주 완성, 특별 스터디 모집을 시작합니다! ~7/8(금) 까지 -- 📌 (96)
오빠두엑셀 | 2022.06.23 | 추천 140 | 조회 17134
오빠두엑셀 2022.06.23 140 17134
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (79)
오빠두엑셀 | 2021.10.28 | 추천 96 | 조회 5322
오빠두엑셀 2021.10.28 96 5322
38868 VBA
New 행복한 한 주 시작 하시길 바랍니다. 도와주세요(고급필터 애러) 엑셀파일첨부파일
파란맥 | 08:42 | 추천 0 | 조회 5
파란맥 08:42 0 5
38839 VBA
New 1주차 VBA 강의 질문입니다 첨부파일 (1)
WWW | 2022.07.03 | 추천 0 | 조회 24
WWW 2022.07.03 0 24
38828 VBA
New VBA 스터디 1주차 두번째 미션 실패 ㅠㅠ 도와주세요 첨부파일 (1)
YJ | 2022.07.03 | 추천 0 | 조회 21
YJ 2022.07.03 0 21
38811 구글시트
New COUNTA 함수 엑셀파일 (2)
거꾸로문 | 2022.07.03 | 추천 0 | 조회 23
거꾸로문 2022.07.03 0 23
38785 VBA
New 1주차 VBA 강의 질문입니다 첨부파일 (1)
sebin**** | 2022.07.03 | 추천 0 | 조회 26
sebin**** 2022.07.03 0 26
38758 VBA
New 고급필터 자동화 범위 설정시 애러 문의 합니다. 첨부파일
파란맥 | 2022.07.03 | 추천 0 | 조회 15
파란맥 2022.07.03 0 15
38730 파워쿼리/피벗
New 피벗테이블 정렬 순서 변경에 관해서 질문드립니다.
월마리아 | 2022.07.03 | 추천 1 | 조회 17
월마리아 2022.07.03 1 17
38686 VBA
New VBA 4주 완성 1편에서 Visual Basic 질문 첨부파일 (3) 답변완료
도토리이 | 2022.07.03 | 추천 0 | 조회 44
도토리이 2022.07.03 0 44
38660 VBA
New VBA, 매크로, 함수 중에 조건에 맞는 값을 가져오기 문의 합니다. 엑셀파일첨부파일 (2)
파란맥 | 2022.07.03 | 추천 0 | 조회 43
파란맥 2022.07.03 0 43
38655 함수/공식
New 근무시간 산출 함수식 문의 드립니다. 엑셀파일
민쉬 | 2022.07.03 | 추천 0 | 조회 28
민쉬 2022.07.03 0 28
38530 피벗테이블
New 피벗테이블에서 총합계만 보고싶을때 엑셀파일첨부파일 (1)
까까오똑 | 2022.07.02 | 추천 0 | 조회 17
까까오똑 2022.07.02 0 17
38483 VBA
New VBA 두 피벗테이블 슬라이서 연동
라바 | 2022.07.02 | 추천 0 | 조회 21
라바 2022.07.02 0 21
38370 VBA
New 행에 마지막 입력값 삭제하는 방법 문의 드림니다. 첨부파일 (2) 답변완료
033cola | 2022.07.02 | 추천 0 | 조회 45
033cola 2022.07.02 0 45
38356 VBA
New VBA 또는 매크로 사용하여 시트1의 원한는 내용만 시트2에 표기하는 스크립트 문의 합니다. 엑셀파일첨부파일 (6) 답변완료
파란맥 | 2022.07.02 | 추천 1 | 조회 61
파란맥 2022.07.02 1 61
38287 VBA
New VBA 범위 입력 소스 문의 합니다. (6) 답변완료
파란맥 | 2022.07.02 | 추천 1 | 조회 60
파란맥 2022.07.02 1 60
38284 기능/도구
New 엑셀 여러가지파일 탭으로 보기 첨부파일
asfdadfs | 2022.07.02 | 추천 -1 | 조회 29
asfdadfs 2022.07.02 -1 29
38260 파워쿼리/피벗
New 청사 출입기록을 월별, 인원별로 정리하고 싶은데 선배님들 조언을 구합니다. 엑셀파일첨부파일 (1)
비에리 | 2022.07.02 | 추천 0 | 조회 29
비에리 2022.07.02 0 29
38258 VBA
New 기준열과 동일하게 셀병합 하는 vba 엑셀파일첨부파일 (2) 답변완료
007 | 2022.07.02 | 추천 0 | 조회 45
007 2022.07.02 0 45
38251 함수/공식
New 엑셀 다중조건으로 다른시트에 추출후 수정해서 원본시트에 업데이트방법? 엑셀파일
제임스딘 | 2022.07.02 | 추천 0 | 조회 35
제임스딘 2022.07.02 0 35
38197 VBA
New VBA 매크로 SelectionChange 명령문(스크립트) 조언 받고자 합니다. 엑셀파일첨부파일 (2) 답변완료
파란맥 | 2022.07.01 | 추천 0 | 조회 27
파란맥 2022.07.01 0 27
38191 함수/공식
New 특정 텍스트만 추출하는 함수에서.. (1) 답변완료
최사무엘 | 2022.07.01 | 추천 0 | 조회 30
최사무엘 2022.07.01 0 30
38187 기능/도구
New 엑린이] 시트값을 자동으로 불러오고 싶습니다 (2) 답변완료
세잎 | 2022.07.01 | 추천 0 | 조회 30
세잎 2022.07.01 0 30
38183 VBA
New VBA 매크로 SelectionChange 명령문 조언 받고자 합니다. 엑셀파일첨부파일 (7) 답변완료
파란맥 | 2022.07.01 | 추천 1 | 조회 38
파란맥 2022.07.01 1 38
38182 함수/공식
New FILTER함수 사용시에 함수가 안먹히는 문제 첨부파일 (1)
엑셀고수되는방법좀 | 2022.07.01 | 추천 0 | 조회 25
엑셀고수되는방법좀 2022.07.01 0 25
38177 함수/공식
New 값을 찾아 가져오고 싶습니다. 엑셀파일 (1) 답변완료
땅콩바라기 | 2022.07.01 | 추천 0 | 조회 23
땅콩바라기 2022.07.01 0 23
38175 문서서식
New 핸드폰 번호 서식을 통일 시키고 싶습니다... (2)
qwerty | 2022.07.01 | 추천 0 | 조회 26
qwerty 2022.07.01 0 26
38154 함수/공식
New 재고파일을 만들고 있는데 수식이.. ㅠㅠ 엑셀파일 (1)
최사무엘 | 2022.07.01 | 추천 -1 | 조회 42
최사무엘 2022.07.01 -1 42
38152 VBA
New Sharepoint에 있는 파일에서 ADODB를 이용해 데이터 추출시 에러 발생하는데, 해결방법에 대해 도움 부탁 드립니다 (3) 답변완료
Jas | 2022.07.01 | 추천 0 | 조회 23
Jas 2022.07.01 0 23
38150 함수/공식
New MATCH함수 문의 엑셀파일첨부파일 (1) 답변완료
땅콩바라기 | 2022.07.01 | 추천 0 | 조회 27
땅콩바라기 2022.07.01 0 27
38149 함수/공식
New 번호 매기기 원하는 "0" 제외하고 번호 매기기 ~ 고수님 부탁드립니다. (4) 답변완료
kwt**** | 2022.07.01 | 추천 0 | 조회 19
kwt**** 2022.07.01 0 19