Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


48123 / 76738 ←次へ | 前へ→

【33552】Re:複雑です、、
質問  ponpon  - 06/1/15(日) 2:13 -

引用なし
パスワード
   ムーン さん、kobasanさん、Hirohumiさん こんばんは。

Dictionaryを使えるようになろうと、kobasanさんのを参考に
勉強がてらに作ってみたのですが・・・
私が作ると、以下のようになります。

Sub test()
  Dim myR As Range, r As Range
  Dim Dic As Object
  Dim myKey
  
  With Sheets("Sheet1")
    Set myR = ActiveSheet.Range("A1", Range("A65536").End(xlUp))
    Set Dic = CreateObject("Scripting.Dictionary")
  
    Application.ScreenUpdating = False
    For Each r In myR
      myKey = r.Text & r.Offset(, 1).Text & r.Offset(, 2).Text
      If Dic.Exists(myKey) Then
       Dic(myKey) = Dic(myKey) + r.Offset(, 3).Text
      Else
       Dic.Add myKey, r.Offset(0, 3).Text
       'Dic(myKey) = r.Offset(0, 3).Text
      End If
    Next
    For Each myKey In Dic.keys()
     For Each r In myR
      If r.Text & r.Offset(, 1).Text & r.Offset(, 2).Text = myKey Then
       r.Offset(, 4) = Dic(myKey)
       Exit For
      End If
    Next
   Next
 End With
   Application.ScreenUpdating = True
  
   Set Dic = Nothing
   Set myR = Nothing
End Sub

そこで、

    For Each r In myR
      myKey = r.Text & r.Offset(, 1).Text & r.Offset(, 2).Text
      If Dic.Exists(myKey) Then
       Dic(myKey) = Dic(myKey) + r.Offset(, 3).Text
      Else
       Dic.Add myKey, r.Offset(0, 3).Text
       'Dic(myKey) = r.Offset(0, 3).Text
      End If
    Next


>  For Each r In rngA.Cells
>    dkey = r.Text & r.Offset(, 1).Text & r.Offset(, 2).Text
>    Dic.Item(dkey) = Dic.Item(dkey) + r.Offset(, 3).Text
>  Next
は、
同じ事をしているのだと思うのですが、kobasanさんのコードが
理解できません。
Dictionary自体をよく理解していないので、とんちんかんな質問なら
申し訳ないのですが、教えていただけますか?

 >Dic.Item(dkey) = Dic.Item(dkey) + r.Offset(, 3).Text
この段階で、    ~~~~~~~~~~~~~~~~は、まだ定義されていないので
エラーになるような気がするのですが(もちろんエラーにはなりませんが)。
Range("A1").Value = Range("A1").Value + 1の様な場合は、
初めは、Range("A1").Value がNULL値(?)=0または、""と考えられるのですが・・・
 >Dic.Item(dkey) = Dic.Item(dkey) + r.Offset(, 3).Text
の場合は、まだ辞書(Dic)に何も登録していないのに、同じように考えて
いいのでしょうか?
 宜しくお願いします。
0 hits

【33528】複雑です、、 ムーン 06/1/14(土) 13:44 質問
【33530】Re:複雑です、、 kobasan 06/1/14(土) 16:20 回答
【33552】Re:複雑です、、 ponpon 06/1/15(日) 2:13 質問
【33553】Re:複雑です、、 kobasan 06/1/15(日) 8:43 発言
【33555】Re:複雑です、、 ponpon 06/1/15(日) 11:11 お礼
【33577】Re:複雑です、、 ムーン 06/1/16(月) 9:05 お礼
【33576】Re:複雑です、、 ムーン 06/1/16(月) 9:03 お礼
【33551】Re:複雑です、、 Hirofumi 06/1/14(土) 23:35 回答
【33578】Re:複雑です、、 ムーン 06/1/16(月) 9:07 お礼

48123 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free