vlookup (4)
엑셀 VBA #127 / Vlookup시리즈3_배열+Dictionary활용 [VBA]
반응형

엑셀 VBA #127 / Vlookup시리즈3_배열+Dictionary활용 [VBA]

Sub Vlookup기능실현_New_Scripting_Dictionary_배열231228()
      
      Dim dict As New Scripting.Dictionary
      Dim rngS, rngF
      Dim i As Long
      Dim arr()
      
      rngS = Sheet1.Range("a2", Sheet1.Cells(Rows.Count, "b").End(3)) 'rngS배열방 지정
      rngF = Sheet2.Range("a2", Sheet2.Cells(Rows.Count, "a").End(3)) 'rngT배열방 지정
      
      For i = 1 To UBound(rngS, 1)
            If dict.Exists(rngS(i, 1)) Then
            Else
                  dict.Add rngS(i, 1), rngS(i, 2)
                  'rngS(i,1)은 Key값, rngS(i,2)는 Item값임!!!!!
                  'cells(i,1)..cells(i,2)가 아님에 주의
            End If
      Next

      ReDim arr(1 To UBound(rngF, 1), 1 To 1)
      For i = 1 To UBound(rngF, 1)
            If dict.Exists(rngF(i, 1)) Then
                  arr(i, 1) = dict(rngF(i, 1))
                  ' "rngF(i,1)"은 Key값이고, 
                  "dict(rngF(i,1))"은 그 Key값에 해당하는 Item의 값임!!!!!!!
            Else
            End If
      Next
      
      Sheet2.Range("e2").Resize(UBound(arr, 1), 1) = arr

End Sub

vba#127.xlsm
0.31MB


엑셀 VBA #118 / Dictionary 개체_기본 [VBA]
엑셀 VBA #119 / Dictionary 개체_실무 [VBA]



https://www.youtube.com/watch?v=I4iyh9tF5kc&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=129
ㅁㅁ

반응형
  Comments,     Trackbacks
엑셀 VBA #126 / Vlookup시리즈2_배열 활용 [VBA]
반응형

엑셀 VBA #126 / Vlookup시리즈2_배열 활용 [VBA]
Vlookup 함수같은 기능
   1. 파워쿼리
   2. 배열
   3. 배열 + Dictionary

 

Sub VlookupVBA_1()   '배열로 Vlookup기능실현

Dim rngS As Variant     '워크시트의 셀범위를 배열로 집어 넣을 땐 항상 Variant임
Dim rngF As Variant      '           "
Dim arr()


Application.ScreenUpdating = False
Sheet2.Range("E2:E" & Sheet2.Range("A2").End(xlDown).Row).Clear

rngS = Sheet1.Range("A2", Sheet1.Cells(Rows.Count, "B").End(3))

셀 범위'Sheet1.Range("A2", Sheet1.Cells(Rows.Count, "B").End(3))'를 rngS방에 넣기
rngF = Sheet2.Range("A2", Sheet2.Cells(Rows.Count, "A").End(3))
셀 범위'Sheet2.Range("A2", Sheet2.Cells(Rows.Count, "A").End(3))'를 rngS방에 넣기

 

 


ReDim arr(1 To UBound(rngF, 1), 1 To 1) '?????
For i = 1 To UBound(rngF, 1)        'UBound(rngF,1) : rngF의 1차원영역의 최대값
    For j = 1 To UBound(rngS, 1)   'UBound(rngS,1) : rngS의 1차원영역의 최대값
        'Sheet2.Cells(i, "E") = rngS(j, 2) '본 코드사용시 속도저하(배열코드가 아니라 워크시트 코드?이므로)
                If rngF(i, 1) = rngS(j, 1) Then
                        arr(i, 1) = rngS(j, 2)
                        Exit For '영상에서 이 코드는 빼먹었습니다.    넣어야 합니다.

                                       '1:1로 매칭되므로 값을 찾았으면 안쪽 for문을 빠져나와야지

                                       '그렇지 않으면 끝까지 루프를 돌므로 시간이 더 소요가 됩니다.
                End If
    Next
Next

Sheet2.Range("E2").Resize(UBound(arr, 1), 1) = arr
Application.ScreenUpdating = True

End Sub

vba#126.xlsm
0.30MB



https://www.youtube.com/watch?v=QM-o-95daIc&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=128

엑셀 VBA #29 / VBA함수(split) [VBA]

반응형
  Comments,     Trackbacks
레이의 VBA정복기8- Vlookup 사용하기
반응형

엑셀 함수 중에서 가장 유용한 함수가 Vlookup함수 아닐까 싶다.

그렇다면 Vlookup기능을 엑셀VBA에서도 구현 가능할까.....?

당연히 가능하다.


앞으로 엑셀VBA를 다시 배워볼 요량이기에 이 글은 메모 차원에서 발행한다.



위 조견표를 기준으로 해서 D3과 D4셀의 입력된 값에 따라 E3,E4에 해당 되는 값을 연결해 주는 함수가 Vlookup이다.


이를 VBA로 코딩하면 아래와 같이 나온다.


각각의 의미는 다른 예제를 통해서 서서히 익혀 나가보자.



이전 관련글 보기  

 - 레이의 VBA정복기7- 숫자를 영어로 변환하는 방법


 - 레이의 VBA정복기6- 숫자를 한글 또는 한자로 변환하는 법


 - 레이의 VBA정복기5- 엑셀 개체 다루기1


 - 레이의 VBA 정복기4 - 개체와 컬렉션 알아보기


 - 레이의 VBA 정복기3 - 프로시저의 종류


 - 레이의 VBA 정복기2 - VBA 구성요소


 - 레이의 VBA 정복기1 - VBA란 무엇인가?



반응형
  Comments,     Trackbacks
엑셀팁 - 2개의 데이터표를 응용하여 요율 찾기(Vlookup)
반응형

엑셀팁

만약 기준이 되는 데이터표(조견표)을 이용하여 요율을 찾아야 한다면,
예를 들면 경력이 3년 이상 그룹과 3년 미만 그룹에 대해서 판매액에 대한 수수료 요율을 달리 한다면 우리는 Vlookup함수를 이용하여 수수료를 계산할 수 있다.

사용자 삽입 이미지







첨부파일 참고.



저와 함께 희망을 향해 함께 달리죠.이걸 꾸~욱 누르면서




반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL