[엑셀 VBA #10] Find~Findnext 문 활용해서 검색하기





이번 주제는 바로 실무에 활용할 수 있는 Find~Findnext 문입니다.

Find~Findnext 문은 엑셀 VBA에서 활용도가 정말 높은 문법입니다.


Find문은 컨트롤 F 키를 눌러서 검색하는 것과 비슷한 기능을 할 수 있습니다.

검색된 부분을 다른 셀에 집어넣거나, 검색된 부분만 따로 떼어내는 등 여러 방면으로 응용할 수 있습니다.


예제를 받고 따라와주세요.


숨겨진 시트를 숨김 해제하면 이전 내용들도 수록되어 있습니다.











이번 예제는 버튼을 누르면 'E1'셀에 있는 내용을 좌측 데이터베이스 '이름' 항목에서 검색 후, 우측 칸에 입력하는 예제입니다.


위 예제는 이름 전체가 일치해야 검색되는 예제이지만, 상황에 따라 부분검색으로 변환할 수도 있습니다.


Sub example_6()

Dim c as Range

Dim StrFirstaddr as String

Dim StrAddr as String


With Sheet7.Range("a1:a31")


    Set c = .Find(Cells(1, 5).Value, Lookat:=xlWhole)       '부분검색은 Lookat:xlPart



    If Not c Is Nothing Then                'c라는 값이 검색된다면 (c가 데이터베이스에 존재한다면)


    StrFirstaddr = c.Address            '첫 주소 설정 (무한루프 방지용)

    StrAddr = c.Address                '주소값 설정



        Do

        Range(StrAddr).Resize(, 3).Copy Cells(Rows.Count, 6).End(3)(2)        '값이 존재하는 셀 바로 아래에 복사하기

        Set c = .FindNext(c)                                '다음 c 값 찾기

        StrAddr = c.Address                                '셀 주소 설정

        Loop While Not c Is Nothing And StrAddr <> StrFirstaddr            '첫 주소와 겹치지 않을때까지 루프

 

    End If

 



End With


End Sub


정말 간단합니다.


모두 이전 엑셀 VBA 강의에서 배웠던 내용들입니다.


값을 복사하는 것 뿐만 아니라, 검색된 부분 삭제, 다른 시트로 이동 등등 여러 방면으로 응용이 가능합니다.


엑셀으로 데이터베이스의 기본적인 원리를 구현하는 것이라고 생각하면 됩니다.


사전 프로그램의 원리도 이와 비슷합니다.
























Posted by Simon K
: