Excel VBA質問箱 IV

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

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


1655 / 76734 ←次へ | 前へ→

【80727】Dictionaryでの値集計
質問  永遠の超初心者  - 19/4/24(水) 15:50 -

引用なし
パスワード
   Dictionaryを使って、キーに対応するアイテムの合計を算出したいです。

キーとなる値=6桁の数値
アイテム=小数点を含む数値
キーの範囲=Range("J51:CE81")…一部空白セル有り
アイテムの範囲=Range("J1:CE1")…全て実装

下記のコードでは
(1)アイテムの合計はキーの数値にアイテムの数値が加算されたものになってしまいます。
 ex.キーが111111で,そのアイテムの合計が7.75の場合は111118.75
(2)試しにキーに文字列を代入すると★で"実行時エラー 13 型が一致しません"と出ます。

不備な点をご指摘ください。

Sub test()
Sheets("Sheet1").Activate
 Dim Dic As Object, buf, iR, iC, i, keys, iT
'管理ナンバー収集
Range("F91:G110").ClearContents
 Set Dic = CreateObject("Scripting.Dictionary")

 For iR = 51 To 81
  For iC = 10 To 83
   If Cells(iR, iC).Value <> "" Then
    buf = Cells(iR, iC).Value   'セルの値をbufに格納(キー)
     If Not Dic.Exists(buf) Then '未登録の場合
     Dic.Add buf, buf      'セルの値を登録
      Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value '対応する行1の値(アイテム)を加算していく★
     Else            '登録済みの場合
      Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value '対応する行1の値(アイテム)を加算していく
     End If
   End If
  Next iC
 Next iR
 
 keys = Dic.keys
 For i = 0 To Dic.Count - 1
  Cells(i + 91, 6) = keys(i) 'キーを表示
 Next i

 iT = Dic.Items
 For i = 0 To Dic.Count - 1
  Cells(i + 91, 10) = iT(i) 'アイテムを表示
 Next i
 
 Set Dic = Nothing
End Sub

4 hits

【80727】Dictionaryでの値集計 永遠の超初心者 19/4/24(水) 15:50 質問[未読]
【80729】Re:Dictionaryでの値集計 ピンク 19/4/24(水) 17:02 回答[未読]
【80731】Re:Dictionaryでの値集計 永遠の超初心者 19/4/25(木) 8:00 質問[未読]
【80732】Re:Dictionaryでの値集計 ピンク 19/4/25(木) 8:28 発言[未読]
【80734】Re:Dictionaryでの値集計 永遠の超初心者 19/4/25(木) 10:00 お礼[未読]

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