셀을 지정해 CurrentRegion로 범위 취득한 테이블을, 키+배열로 Dictionary에 부치 넣는다

7474 단어 ExcelExcelVBA
셀을 지정해, 그 테이블을 CurrentRegion.value 로 배열에 부치 넣을 수 있습니다.
이를 적용하여 범위를 얻은 테이블이 몇 행이더라도
가장 왼쪽 열: 키
기타 열: 배열
로 사전에 저장할 수 있습니다.
이제 테이블의 데이터를 가져오는 것이 매우 편리합니다.

아래 예에서 쓰는 방법을 설명하면,dic(菊池)(1) 라고 쓰면 168, dic(芦田)(2) 라고 쓰면 44를 호출할 수 있습니다.

실질적인 본체는 단 7행입니다만, 엄청 머리를 사용했습니다. 자신의 땀과 시행 착오의 결정입니다.

[테스트 데이터]


testDic.bas
    Dim dic As Object: Set dic = CreateObject("Scripting.Dictionary")
    Dim arr As Variant: arr = Sheets("Sheet2").Range("E6").CurrentRegion.Value
    Dim arrItem()
    Dim maxColNum_0 As Integer: maxColNum_0 = UBound(arr, 2) - 2
    Dim LP1 As Long, LP2 As Long

    ReDim arrItem(maxColNum_0)

    For LP1 = 2 To UBound(arr, 1)
        For LP2 = 0 To maxColNum_0
            arrItem(LP2) = arr(LP1, LP2 + 2)
        Next LP2
        dic.Add arr(LP1, 1), arrItem
    Next LP1


'----デバッグ部----
'配列の中身を全部見せ
  Dim i As Integer, j As Integer, str As String
  Dim maxRow As Integer:  maxRow = UBound(arr, 1)
  Dim maxColumn As Integer: maxColumn = UBound(arr, 2)

  For i = 1 To maxRow
    For j = 1 To maxColumn
        str = "arr(" & i & ", " & j & ")=" & arr(i, j)
        Debug.Print str
    Next
    Debug.Print
  Next

'Dicの中身を全部見せ
    Dim var As Variant
    For Each var In dic
        Debug.Print "キー:" & var
        For LP2 = 0 To maxColNum_0
            Debug.Print "dic(" & var & ")(" & LP2 & "):", dic(var)(LP2)
        Next LP2
    Next var
End Sub

[실행 결과]

좋은 웹페이지 즐겨찾기