投稿/コメントを表示します。

田中 宏明さんの投稿

(投稿ID: 4470)  添付ファイルのダウンロード権限がありません

小川慶一先生:

その後、別の解法を探し、ArrayListと呼ばれる配列(自作クラス)でうまく動作しました。ファイルも添付しますので、この感激を共有していただければ幸いです。
Sub mondai4_Arr1() 'ArrayListに数値を格納

    Range("J1:O" & Range("O" & Rows.Count).End(xlUp).Row).ClearContents '初期化
    
    Dim cFm As Long
    Dim dic As Scripting.Dictionary '市区名毎の情報管理用
    Set dic = New Scripting.Dictionary
    Dim st As String
    
    For cFm = 2 To Range("A" & Rows.Count).End(xlUp).Row
        st = Range("C" & cFm).Value
        If Not dic.Exists(st) Then
            'インスタンス化したArrayListへの参照をDictionaryに格納
            dic.Add st, New ArrayList
        End If
        'ArrayListに行番号を追加
        dic.Item(st).Add cFm
    Next cFm

    Dim cBe As Long
    Dim cTo As Long
    Dim sp() As String
    cTo = 2
    
    For cFm = 0 To dic.Count - 1
        st = dic.Keys(cFm)
        Range("J" & cTo).Value = st & "のマンションは" & dic.Item(st).Count & "件ヒットしました!"
        cTo = cTo + 1
        
        '市区名をキーとするDictionaryが参照したArrayListから行番号を取り出す
        For cBe = 0 To dic.Item(st).Count
            Range("K" & cTo).Value = Range("F" & dic.Item(st).GetVal(cBe)).Value
            Range("L" & cTo).Value = Range("D" & dic.Item(st).GetVal(cBe)).Value
            Range("M" & cTo).Value = Range("E" & dic.Item(st).GetVal(cBe)).Value
            sp = Split(Range("G" & dic.Item(st).GetVal(cBe)).Value, "/")
            Range("N" & cTo).Value = sp(0)
            Range("O" & cTo).Value = sp(1)
            cTo = cTo + 1
        Next cBe
        cTo = cTo + 1
    Next cFm
End Sub

2019/04/20 23:11