| 
    
     |  | ▼Mia さん: こんばんは。
 
 >実際に全部試して見ましたが、エラーになってしまいました。
 私も他の方のコードも全部試しました。
 きちんとC列にデータが表示されていましたよ!!
 (Win2000&Excel2002で確認)
 
 こういう場合、想定しているデータがMia さんと回答者では違う
 又は、試行データに想定以外のデータがある場合をよく経験します。
 
 
 で、サンプルデータもこちらで作ってしまいます。
 
 
 新規ブック(Sheet1というシート名が存在する)の標準モジュールに
 
 '=================================================================
 Option Explicit
 Sub main()
 Call mk_sample 'サンプルデータを作成
 MsgBox "ご覧のデータで処理をします"
 Call test
 End Sub
 '=================================================================
 Sub mk_sample()
 With Worksheets("sheet1")
 .Activate
 .Cells.Clear
 .Range("a1:c1").Value = Array("参加予定者", "実際の参会者", "延べ参加者?")
 .Range("a2:a8").Value = Application.Transpose(Array( _
 "01-Aさん", "02-Bさん", _
 "03-Cさん", "04-Dさん", _
 "05-Eさん", "06-Fさん", _
 "07-Gさん"))
 .Range("b2:b8").Value = Application.Transpose(Array( _
 "01-Aさん", "03-Cさん", _
 "03-Cさん", "06-Fさん", _
 "11-Jさん(突然参加者)", _
 "11-Jさん(突然参加者)", _
 "13-Lさん(突然参加者)"))
 End With
 End Sub
 '=====================================================================
 Sub test()
 Dim marray As Variant
 Dim rng As Range
 Dim crng As Range
 Dim ans As Variant
 Dim dkey As Variant
 Dim dat As Variant
 Dim num As Long
 Dim g0 As Long
 Dim g1 As Long
 Dim g2 As Long
 If Cells(Rows.Count, "b").End(xlUp).Row > 1 Then
 With CreateObject("scripting.dictionary")
 ans = Application.Transpose(Range("b2", Cells(Rows.Count, "b").End(xlUp)).Value)
 For g0 = LBound(ans) To UBound(ans)
 dkey = Val(Split(ans(g0), "-")(0))
 If .Exists(dkey) Then
 marray = .Item(dkey)
 marray(1) = marray(1) + 1
 .Item(dkey) = marray
 Else
 .Add dkey, Array(ans(g0), 1)
 End If
 Next
 Set rng = Range("a2", Cells(Rows.Count, "a").End(xlUp))
 If rng.Row > 1 Then
 For Each crng In rng
 dkey = Val(Split(crng.Value, "-")(0))
 If Not .Exists(dkey) Then
 .Add dkey, Array(crng.Value, 1)
 End If
 Next
 End If
 g0 = LBound(.Keys)
 g1 = 2
 Do While g0 <= UBound(.Keys)
 dat = .Item(Application.Small(.Keys, g0 + 1))(0)
 num = .Item(Application.Small(.Keys, g0 + 1))(1)
 For g2 = 1 To num
 Cells(g1, 3).Value = dat
 g1 = g1 + 1
 Next
 g0 = g0 + 1
 Loop
 End With
 End If
 End Sub
 
 
 これでmainを実行してみてください。
 testというプロシジャーは、前回投稿のままです。
 mk_sampleでMia さんの投稿を基にしたサンプルデータを作成しています。
 
 これでC列にデータが作成されるか試してみてください。
 
 これが動作するようなら、ご自分の動作しないデータと何が違うのか
 見比べてください。
 
 
 |  |