Excel VBA質問箱 IV

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

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


4349 / 13646 ツリー ←次へ | 前へ→

【57176】セル合計をまとめて転記する方法 makira 08/7/30(水) 20:45 質問[未読]
【57179】Re:セル合計をまとめて転記する方法 kanabun 08/7/30(水) 21:35 発言[未読]
【57180】Re:セル合計をまとめて転記する方法 makira 08/7/30(水) 21:46 お礼[未読]

【57176】セル合計をまとめて転記する方法
質問  makira  - 08/7/30(水) 20:45 -

引用なし
パスワード
   Sub kensaku()
  Dim hani As Range
  Dim R As Range
  Dim tl, tl2, tl3, tl4, tl5, tl6 As Variant
  
  Set hani = Worksheets(2).Range(Cells(1, 1), Cells(20, 1))
  
  For Each R In hani
    
    If R.Value = 132 Then
      If Worksheets(2).Cells(R.Row, 31) = "あああ" Then
       tl = Worksheets(2).Cells(R.Row, 14)
       tl2 = tl2 + tl
       
       tl3 = Worksheets(2).Cells(R.Row, 15)
       tl4 = tl4 + tl3
       
       tl5 = Worksheets(2).Cells(R.Row, 16)
       tl6 = tl6 + tl5
       
       For i = 1 To 3
         myarray = Array(tl2, tl4, tl6)
         Worksheets(3).Cells(3, i) = myarray(i)
       Next i
     
      End If
    
    End If
   
  Next

End Sub

上記のように書いているのですが、
tl = Worksheets(2).Cells(R.Row, 14)
tl2 = tl2 + tl
       
tl3 = Worksheets(2).Cells(R.Row, 15)
tl4 = tl4 + tl3
       
tl5 = Worksheets(2).Cells(R.Row, 16)
tl6 = tl6 + tl5

の合計していく部分を
ループさせる?あるいはまとめる方法を教えてください。

今、3列のそれぞれの合計だけを書いているのですが
実際は20列分のそれぞれの合計を出す必要があり
何か策はないかと検討中です。


よろしくお願いします。

【57179】Re:セル合計をまとめて転記する方法
発言  kanabun  - 08/7/30(水) 21:35 -

引用なし
パスワード
   ▼makira さん:
>の合計していく部分を
>ループさせる?あるいはまとめる方法を教えてください。

そのままをまとめると、こういうことをしているのですよね?
Sub kensaku()
  Dim R As Range
  Dim t2, t4, t6
  
  For Each R In Worksheets(2).[A1:A20]
    If R.Value = 132 Then
      If R(1, 31).Value = "あああ" Then
        t2 = t2 + R(1, 14).Value
        t4 = t4 + R(1, 15).Value
        t6 = t6 + R(1, 16).Value
        Worksheets(3).[A3].Resize(, 3).Value = Array(t2, t4, t6)
      End If
    End If
  Next
End Sub

>今、3列のそれぞれの合計だけを書いているのですが
>実際は20列分のそれぞれの合計を出す必要があり
>何か策はないかと検討中です。

その20列というのは 連続した列ですか?
もしそうで、かつ、ループしないことが目的ならば、
加算貼り付けという手があります。

Sub kensaku2()
  Dim R As Range
  
  For Each R In Worksheets(2).[A1:A20]
    If R.Value = 132 Then
      If R(1, 31).Value = "あああ" Then
        R.Range("N1:P1").Copy
        Worksheets(3).[A3].PasteSpecial xlPasteValues, xlAdd
      End If
    End If
  Next
End Sub

【57180】Re:セル合計をまとめて転記する方法
お礼  makira  - 08/7/30(水) 21:46 -

引用なし
パスワード
   ▼kanabun さん:
ご返信ありがとうございます。
20列は連続していないのですが1番目の方法を使わせていただきました。
勉強になります。


>▼makira さん:
>>の合計していく部分を
>>ループさせる?あるいはまとめる方法を教えてください。
>
>そのままをまとめると、こういうことをしているのですよね?
>Sub kensaku()
>  Dim R As Range
>  Dim t2, t4, t6
>  
>  For Each R In Worksheets(2).[A1:A20]
>    If R.Value = 132 Then
>      If R(1, 31).Value = "あああ" Then
>        t2 = t2 + R(1, 14).Value
>        t4 = t4 + R(1, 15).Value
>        t6 = t6 + R(1, 16).Value
>        Worksheets(3).[A3].Resize(, 3).Value = Array(t2, t4, t6)
>      End If
>    End If
>  Next
>End Sub
>
>>今、3列のそれぞれの合計だけを書いているのですが
>>実際は20列分のそれぞれの合計を出す必要があり
>>何か策はないかと検討中です。
>
>その20列というのは 連続した列ですか?
>もしそうで、かつ、ループしないことが目的ならば、
>加算貼り付けという手があります。
>
>Sub kensaku2()
>  Dim R As Range
>  
>  For Each R In Worksheets(2).[A1:A20]
>    If R.Value = 132 Then
>      If R(1, 31).Value = "あああ" Then
>        R.Range("N1:P1").Copy
>        Worksheets(3).[A3].PasteSpecial xlPasteValues, xlAdd
>      End If
>    End If
>  Next
>End Sub

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