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

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

주소 검색기 이름중복검색

VBA .Find 조회 수 3111 추천 수 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
번호 제목 글쓴이 날짜 조회 수sort
공지 공지 [공지] 아별닷컴의 엑셀 질문방 폐쇄합니다. 카페 질문방 이용하세요.. imagefile [레벨:30]아별 2015-04-23 45382
562 pivot 기본 수식 질문이요 _ 피벗테이블을 사용하면 간단히 해결되는 경우 file [2] [레벨:4]요셉 2014-01-02 3046
561 엑셀수식 엑셀 수식 질문.. _ OFFSET 활용하여 특정 범위값만 합계로 표시하기 file [1] [레벨:1]박주연 2012-02-29 3053
560 차트 엑셀에서 라인 차트 질문입니다. imagefile [2] [레벨:6]해피엔드 2011-08-04 3058
559 엑셀수식 수식 탭-수식 분석-수식계산 단축키 [2] [레벨:4]쟈니 2014-02-18 3067
558 VBA 특정폴더 내 숨기지 않은 파일 모두 열기 [2] [레벨:4]고수가되고파 2012-10-18 3077
557 액셀요 ..정년일 구하기. [1] [레벨:1]Dookie 2011-03-07 3078
556 VBA 매크로.. [1] [레벨:2]광택입니다 2011-10-18 3078
555 엑셀수식 엑셀 작업 중, 질문사항! - 다중 조건의 합계 산출 방법(SUMIFS,SUMPRODUCT) [2] [레벨:4]나카타 2011-12-08 3078
554 엑셀일반 조건에 따라 데이터를 검색하거나 입력하시오..에 대한 질문드립니다 file [3] [레벨:1]화령월향 2013-02-20 3081
553 엑셀수식 품목별 자재사용내역서에서 조회 원하는 날 이전 근접값 조회하기 file [레벨:4]성투은자 2014-11-19 3081
552 엑셀일반 그래프작성 file [1] [레벨:0]핑크푸우 2013-02-08 3086
551 엑셀일반 용량이 큰 엑셀파일 불럭오기 하면 시간이 많이 걸려요 file [3] [레벨:1]도상우 2012-04-03 3090
550 VLookup vlookup이 실행이 안되네요 도와주세요 [1] [레벨:1]허니 2013-04-29 3102
549 엑셀일반 엑셀 수식이 바로 적용이 안됩니다. [1] [레벨:0]soiltree 2013-11-04 3107
» VBA .Find 주소 검색기 이름중복검색 file [3] [레벨:1]최종원 2012-08-07 3111
547 엑셀일반 특정 조건에 맞는 행(또는 열) 삭제 방법 궁금해요~ [2] [레벨:3]jmsynn 2012-08-07 3118
546 엑셀에서 이메일 입력 시 @이메일 주소 자동 입력하는 방법이 없을까요? [2] [레벨:3]읍내꽃미남 2011-01-14 3119
545 엑셀일반 궁금한게 있습니다...급합니다..ㅠㅠ [레벨:1]사라다 2014-03-07 3120
544 엑셀수식 월마다 불규칙한 자재사용량의 월사용량 file [1] [레벨:4]성투은자 2013-02-06 3121
543 VBA 닫혀있는 다른파일 데이터 어떻게 참조하나요? [1] [레벨:1]coftw 2013-06-01 3126