1. FAQ
  2. 엑셀(Excel)
  3. AfterEffects
  4. Premiere
  5. Photoshop
  6. ETC

이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.

주소 검색기 이름중복검색

VBA .Find 조회 수 1876 추천 수 0 2012.08.07 01:04:09

안녕하세요

이번 지방기능경기대회에서 성적을 거두어 전국기능경기대회에나가는

고3 최종원이라고합니다..

여기와보니 제가이떄까지 쓴 코드는 정말 한마디로 허?접 ?하다 라고느껴질정도로

정말 코드는 넓고도 방대합니다..

여기서 야별님께 처음으로 질문드려봅니다..

제가올린파일중에 주소검색기 의 버튼중 주소 검색이라는 버튼이있습니다.

그런데

중복검색은 되긴됩니다 (예제:김민준)

하지만! 주소검색을할경우 이름을 입력하고 주소검색버튼을 누를시 검색이되는것인데

이상하게도 주소데이터시트를보시면

이름중 방재용까지밖에 검색이 되지않습니다..

그아래에  4개의 셀이더있는데

그 4개의셀까지 검색할수있는방법을알고싶습니다..

제생각에는 제코드가 틀렷다고하지않는데 왜틀린이유까지좀 알려주시면 감사하겠습니다..

 


댓글 '3'

profile

[레벨:30]아별

2012.08.07 02:40:59
*.130.73.75

안녕하세요? 최정원님..

전국기능경기대회에 출전하시는군요..

 

올해 지방기능경기대회 엑셀 문제가 학생들이 풀기에는 좀 어렵든데.. 훌륭하십니다. ^^)b

혹시.. 엑셀 과제에서 추가문제 뭐 나왔었는지 기억하시나요? ㅎㅎ

가끔 질문 들어올때가 있는데.. 추가 문제가 뭔지 몰라서.. 하하..

 

암튼..

"주소검색기"유저폼에서

Private Sub CommandButton2_Click() 프로시저의 For문에서

For K = 7 To .Range("b6").CurrentRegion.Rows.Count 라고 하셨는데..

K가 7부터 시작했기 때문에 To에는 현재 영역의 행수 + 7을 해주어야합니다.

 

현재 영역(CurrentRegion)은 6행부터 시작되기 때문에 중복된 행수를 제외시켜서 실제 데이터가 있는 행까지 지정하려면..

For K = 7 To .Range("b6").CurrentRegion.Rows.Count + 7 - 2 라고 코딩해주시면 되겠습니다.

 

되움이 되셨기를.. ^^

 

다운받기 : 2011전국-2.xlsm

 

첨부

[레벨:1]최종원

2012.08.07 08:50:30
*.55.53.238

종원입니다!! 우선 정말감사드립니다. 그리고 수고하셨습니다.

아별님께서 알려주신 코드를 한번써보았습니다.^^

제가 질문한 검색은 정말 잘되었습니다.!!

그런데 그후 제가 질문을 잘못했다는것을알게되었습니다.

이 프로그램이 돌아가는 순서는

1번 . 아무이름을 검색을하면 중복된검색빼고는 전부검색이되야함

2번. 중복된 이름이 나오게되면 그조건을 (차례대로나타냄!)

야별님께서 알려주신 코드를써보게되면 8번에있는 김민준이아닌 17번에 있는 김민준이검색되 고민을해서

안되는 머리로 끙끙짜보다 겨우겨우 몇시간이지난후

한개의변수와 for문을넣어 야별님코드 + 제코드 를 합쳐 완성해냈습니다.

정말감사합니다. 야별님덕분에 길을잡게되었습니다.

첨부
profile

[레벨:30]아별

2012.08.07 16:14:13
*.104.126.21

아별입니다!!

중간에 야별님이라 하셨길래.. 한번 따라해봤습니다. ㅎㅎ

 

저렇게 for문으로 순환하면서 if문으로 특정값을 찾는 것은..

데이터가 작은 경우 별 문제가 없지만.. 데이터가 몇 만 줄 이상일때는 효율적인 방법은 아닙니다.

 

.Find메서드를 사용해볼 것을 권장합니다.

최종원님의 방법의 경우 중복되는 항목이 2개 이상일 경우는 대응이 안되는데요..

 

음.. 좀 복잡하지만.. 실무 레벨에서 사용할 법한 코딩을 알려드립니다.

그저 참고하시길..

 

기능경기대회의 채점 기준이 어떻게 되는지 몰라서 알려드리기 애매합니다만..

이런 것도 있구나 정도로 참고하심이.. ^_^;;

 

 

제가 코드를 수정한 참고 파일 다운 받아보시길..

다운받기 : 2011전국-3.xlsm

 

 

 

[ 참고 코드 ]

 

'### 변수를 던져주면 일치하는 셀들의 주소를 배열로 리턴해주는 함수

'### abyulFind(찾을범위, 찾을 값, 정확히일치여부, 찾을 기준셀)

Public Function abyulFind(rngSrc As Range, strFind As String, dblLookAt As Double, Optional rngAfter As Range)
    Dim rngFind As Range, varFind() As Variant
    If rngAfter Is Nothing Then Set rngAfter = ActiveCell
    Set rngFind = rngSrc.Find(What:=strFind, LookAt:=dblLookAt, After:=rngAfter)
    If rngFind Is Nothing Then
        abyulFind = vbNullString
        Exit Function
    End If
   
    Dim cnt As Double: cnt = 0
    Dim rngAddress As String: rngAddress = rngFind.Parent.Name & "!" & rngFind.Address
    Do
        ReDim Preserve varFind(cnt)
        varFind(cnt) = "'" & rngFind.Parent.Name & "'" & "!" & rngFind.Address
        Set rngFind = rngSrc.FindNext(After:=rngFind)
        If "'" & rngFind.Parent.Name & "'" & "!" & rngFind.Address = varFind(0) Then Exit Do
        cnt = cnt + 1
    Loop
   
    abyulFind = varFind
   
End Function

 

'### 호출해서 사용하는 것은 이런 식으로..

Sub findFunction()
    Dim varFind As Variant
    varFind = abyulFind(cells, "김민종", xlWhole, cells(1, 1))

    If TypeName(varFind) = "Variant()" Then
        MsgBox "총 " & UBound(varFind) + 1 & "개의 결과가 있습니다."
        Dim i As Double, rngFind As Range
        For i = 0 To UBound(varFind)
            Range(varFind(i)).Select
        Next i
    Else
        MsgBox "해당하는 값이 없습니다."
    End If
End Sub

첨부
문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 12693
480 피벗테이블 피벗테이블 옵션 file [3] [레벨:3]블루짱이 2012-08-29 860
479 VBA .Find Find 함수를 이용한 검색 관련 질문 [1] [레벨:1]YeonG 2012-08-28 1692
478 피벗테이블 함수 관련 질문 드립니다. _ 피벗테이블로 요약하기 기초 file [1] [레벨:3]블루짱이 2012-08-28 814
477 이미지,도형 등 엑셀 이미지 첨부 질문... _ 이미지 첨부시 파일 연결로 엑셀 파일 용량 줄이는 방법 [4] [레벨:2]큰아빠에요 2012-08-28 6918
476 엑셀버그 상대참조 수식 관련해서 질문입니다~ _ 상대참조 복사가 안되는 엑셀 버그 file [3] [레벨:4]요셉 2012-08-27 1333
475 배열수식 엑셀의 신님께 질문드립니다. _ 배열수식으로 데이터 왼쪽 정렬로 표시하기 file [3] [레벨:1]현구 2012-08-24 1054
474 엑셀수식 고수님들 도와주세요 ~ 엑셀에서 글자색에 따른 if함수 수식 가능해요? [1] [레벨:1]관절결림 2012-08-23 2895
473 VBA 엑셀 다른파일 비교하기 2 [2] [레벨:6]파이스 2012-08-23 2622
472 차트 추세선 시작점, 그래프 시작과 맞추는 법 imagefile [2] [레벨:4]쟈니 2012-08-21 3029
471 엑셀일반 엑셀 숨겨진데이터에 맞춰서 내용붙여넣기 방법문의요^^ [3] [레벨:1]가까이하기엔먼엑셀 2012-08-16 1103
470 VBA 파일&폴더 파일 만들기 _ 파일 생성, 폴더 생성, 파일 존재하는지 여부 확인 등 [4] [레벨:3]엑셀대단해 2012-08-15 3869
469 엑셀수식 제가 질문을 잘못 드린것 같아요? file [4] [레벨:2]북곰 2012-08-14 957
468 엑셀수식 엑셀 질문 입니다? file [1] [레벨:2]북곰 2012-08-13 737
467 엑셀수식 공백에만 동일한 함수 넣기! [4] [레벨:3]jmsynn 2012-08-13 1053
466 pivot 다중범위통합 ㅠㅠ 할수없이 _ 피벗테이블 다중 통합 범위 [4] [레벨:5]눈물바다 2012-08-08 2501
465 엑셀수식 수식질문이욤.ㅠㅠ [1] [레벨:5]눈물바다 2012-08-08 881
464 엑셀일반 특정 조건에 맞는 행(또는 열) 삭제 방법 궁금해요~ [2] [레벨:3]jmsynn 2012-08-07 2147
» VBA .Find 주소 검색기 이름중복검색 file [3] [레벨:1]최종원 2012-08-07 1876
462 VBA sub과function차이 [4] [레벨:2]snail0513 2012-08-07 1356
461 엑셀수식 mid len 함수 질문욤^^ [1] [레벨:5]눈물바다 2012-08-06 833