[엑셀 VBA #10] Find~Findnext 문 활용해서 검색하기
엑셀 VBA 강의 2015. 11. 21. 22:57 |이전 포스팅 바로가기
[엑셀 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 강의에서 배웠던 내용들입니다.
값을 복사하는 것 뿐만 아니라, 검색된 부분 삭제, 다른 시트로 이동 등등 여러 방면으로 응용이 가능합니다.
엑셀으로 데이터베이스의 기본적인 원리를 구현하는 것이라고 생각하면 됩니다.
사전 프로그램의 원리도 이와 비슷합니다.
'엑셀 VBA 강의' 카테고리의 다른 글
[엑셀 VBA #12] (배열응용) 특정 셀 영역 그대로 복사/이동하기 (2) | 2015.11.24 |
---|---|
[엑셀 VBA #11] (배열#1) 배열 이해하기. 배열의 차원과 정적, 동적배열 (0) | 2015.11.24 |
[엑셀 VBA #9] 값이 있는 마지막 셀을 선택, End 속성 (3) | 2015.11.20 |
[엑셀 VBA #8] Resize, Offset 문을 이용한 셀 범위 설정 (1) | 2015.11.16 |
[엑셀 VBA #7] SELECT CASE 조건문 활용하기 (2) | 2015.11.11 |