Excel VBA質問箱 IV

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

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


798 / 76735 ←次へ | 前へ→

【81600】重複Key毎の合計を求める
質問  assya  - 21/1/20(水) 21:49 -

引用なし
パスワード
   VBA初心者です。表題の件につきまして調べ・試し数日悩みまして、いよいよ解決方法がなくここで質問させてください。

以下のようなデータがあります。
Column1をキーにして、重複を除外、Column2以降(7以降も30~40程データがあります)を合計したいです。

そして我儘ですが勉強のためにdictionaly型で実装したいです。

FOR分をまわして、If Not myDic.exists(myList(i, 1)) Then でキーの重複を除外することまではできたのですが、
下記例でいうところのキー(AAAAA) × Column2 の合計値を13に計算するという部分が理解できていません。

==================
Column1    Column2    Column3    Column4    Column5    Column6    Column7
AAAAA    10.00    0.00    0.00    0.00    0.00    10.00
BBBBB    0.00    2.00    3.00    3.00    0.00    0.00
CCCCC    0.00    0.00    0.00    0.00    0.00    0.00
BBBBB    0.00    5.00    6.00    4.00    0.00    0.00
AAAAA    1.00    4.00    1.50    4.00    0.00    0.00
AAAAA    2.00    0.00    0.00    0.00    0.00    0.00
BBBBB    3.00    1.00    0.50    0.00    0.00    0.00
BBBBB    0.00    0.00    0.00    0.00    0.00    0.00
CCCCC    8.00    0.00    0.00    0.00    0.00    0.00
==================

==================
Column1    Column2    Column3    Column4    Column5    Column6    Column7
AAAAA    13.00    4.00    1.50    4.00    0.00    10.00
BBBBB    3.00    8.00    9.50    7.00    0.00    0.00
CCCCC    8.00    0.00    0.00    0.00    0.00    0.00
==================

全然間違っていると思うのですが、以下に現状のソースを載せます。

Sub sample()

Dim myDic As Object
Dim myKey As Variant
Dim myItem As Variant
Dim Value As Variant
Dim myList As Variant
Dim i, u As Long

  Set myDic = CreateObject("Scripting.Dictionary")

  'A列,AF列のデータ全体DTを変数に格納
  myList = Range("A8:AF18").Value
  
  For i = 1 To UBound(myList, 1) 'DTのRow分くりかえす

    myKey = myList(i, 1)
    
    'Keyが空かチェック
    If Not myList(i, 1) = Empty Then
      
      If Not myDic.exists(myList(i, 1)) Then '重複チェック

        '重複がない場合Itemを登録
        For u = 2 To 32
          myItem = myList(i, u)
          Debug.Print "myItemは" & myItem & "です"
        Next u
        
        'keyを辞書登録
        myDic.Add myList(i, 1), myItem
        
      Else
        '加算
        For u = 2 To 32
          myItem = myList(i, u) + myList(i, u)
          Debug.Print "合算後myItemは" & myItem & "です"
        Next u
      End If
    End If
  Next

  '重複していないリストを格納
  myKey = myDic.Keys
  
  '重複を除いたkeyの一覧を出力
  For i = 0 To myDic.Count - 1
    Debug.Print myKey(i)
  Next

  '合計を格納
  'myItem = myDic.items
  
  For i = 0 To myDic.Count - 1
    Debug.Print "キーの値:" & myKey(i)
  Next

  'リストを出力
  For i = 0 To UBound(myKey)
    Cells(i + 25, 1).Value = myKey(i)
    For u = 2 To 33
      Cells(i + 25, u).Value = myItem(i, u)
    Next u
  Next

  '開放
  Set myDic = Nothing

End Sub

1 hits

【81600】重複Key毎の合計を求める assya 21/1/20(水) 21:49 質問[未読]
【81601】Re:重複Key毎の合計を求める γ 21/1/21(木) 7:39 発言[未読]
【81602】Re:重複Key毎の合計を求める assya 21/1/21(木) 15:09 回答[未読]
【81604】Re:重複Key毎の合計を求める γ 21/1/21(木) 23:24 発言[未読]
【81605】Re:重複Key毎の合計を求める assya 21/1/22(金) 12:01 お礼[未読]
【81603】Re:重複Key毎の合計を求める マナ 21/1/21(木) 18:42 発言[未読]
【81606】Re:重複Key毎の合計を求める assya 21/1/22(金) 12:03 お礼[未読]

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