Excel VBA質問箱 IV

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

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


13538 / 76738 ←次へ | 前へ→

【68703】Re:A〜D列が同じ値ならE列合計
発言  kanabun  - 11/4/7(木) 21:17 -

引用なし
パスワード
   ▼希椛(ののか) さん:

UO3 さんが考えておられる「セルに都度書き込まない」方法
というのは(たぶんですが)こんなことかと思います。
こうすると
> Application.ScreenUpdating = False '/ True
が不要になります。

Sub Try1()
  Dim r As Range
  Dim v, ss As String
  Dim i As Long, j As Long, k As Long, n As Long
  Dim dic As Object
  
  Set dic = CreateObject("Scripting.Dictionary")
  With Range("A1").CurrentRegion.Resize(, 5)
    Set r = .Resize(, 4)
    v = .Value
    For i = 1 To r.Rows.Count
                  ' [A+B+C+D]結合文字列
      ss = Join(Application.Index(r.Rows(i).Value, 0#))
      
      If dic.Exists(ss) Then '---- [A+B+C+D]が登録済みのとき
        n = dic(ss)
        v(n, 5) = v(n, 5) + v(i, 5) '加算
        
      Else         '----- [A+B+C+D]はじめてのとき
        k = k + 1
        dic(ss) = k      '辞書にkey[A+B+C+D]の行番号登録
        If i > 1 Then     '配列内 行移動
          For j = 1 To 5
            v(k, j) = v(i, j)
          Next
        End If
      End If
    Next
    .ClearContents
    .Resize(k).Value = v
  End With
End Sub

0 hits

【68699】A〜D列が同じ値ならE列合計 希椛(ののか) 11/4/7(木) 16:40 質問
【68700】Re:A〜D列が同じ値ならE列合計 UO3 11/4/7(木) 17:09 回答
【68701】Re:A〜D列が同じ値ならE列合計 希椛(ののか) 11/4/7(木) 17:16 質問
【68702】Re:A〜D列が同じ値ならE列合計 UO3 11/4/7(木) 17:58 発言
【68703】Re:A〜D列が同じ値ならE列合計 kanabun 11/4/7(木) 21:17 発言
【68732】Re:A〜D列が同じ値ならE列合計 希椛(ののか) 11/4/12(火) 8:59 お礼

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