- ベストアンサー
エクセルVBAで集計
リスト形式になったデータがあります。 C、D、E列(6行目以降)に数のデータがあります。 L列のデータが「東京都」と「神奈川県」であれば、 CDE列をたして合計し、数をそれぞれメッセージボックスで 「東京都:50 神奈川県100」というように表示したいのですが、 コードをお教えいただけないでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No2-3 merlionXXです。 ついでなので、リストに無い名前があってもエラーにせず、不存在と表示するようにしてみました。 Sub test03() Dim n As Long, i As Long, myAr, myCt(), myStr As String myAr = Array("東京都", "神奈川県", "新潟県", "京都府", "音威子府", "沖縄県") With ActiveSheet For n = LBound(myAr) To UBound(myAr) For i = 6 To .UsedRange.Cells(.UsedRange.Count).Row ReDim Preserve myCt(n) If .Cells(i, "L") = myAr(n) Then myCt(n) = myCt(n) + Application.Sum(Range(.Cells(i, "C"), .Cells(i, "E"))) End If Next i If myCt(n) = "" Then myCt(n) = "不存在" myStr = myStr & myAr(n) & ": " & myCt(n) & vbCr Next n End With MsgBox myStr, vbInformation, " ( ̄ー ̄)v" End Sub
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロでなくとも答えは次のようにすれば出すことができますが。 ="東京都:"&SUMIF(L:L,"東京都",C:C)+SUMIF(L:L,"東京都",D:D)+SUMIF(L:L,"東京都",E:E)&" 神奈川県:"&SUMIF(L:L,"神奈川県",C:C)+SUMIF(L:L,"神奈川県",D:D)+SUMIF(L:L,"神奈川県",E:E)
お礼
ありがとうございました。関数参考になりました。
- merlionXX
- ベストアンサー率48% (1930/4007)
No2 merlionXXです。 お書きになった「東京都」と「神奈川県」というのはほんの一例で、実際にはもっとたくさんあるのではないかと思い、書き直しました。 こんな感じでどうでしょう? Array("東京都", "神奈川県", "新潟県", "石川県", "沖縄県")の部分に書き加えればいくつでも増やせます。 ただしリストに無い名前を書かれるとエラーになりますよ。 Sub test02() Dim i As Long, myAr, myCt() myAr = Array("東京都", "神奈川県", "新潟県", "石川県", "沖縄県") With ActiveSheet For n = LBound(myAr) To UBound(myAr) For i = 6 To .UsedRange.Cells(.UsedRange.Count).Row If .Cells(i, "L") = myAr(n) Then ReDim Preserve myCt(n) myCt(n) = myCt(n) + Application.Sum(Range(.Cells(i, "C"), .Cells(i, "E"))) End If Next i myStr = myStr & myAr(n) & ":" & myCt(n) & vbCr Next n End With MsgBox myStr, vbInformation, " ( ̄ー ̄)v" End Sub
- merlionXX
- ベストアンサー率48% (1930/4007)
こういう感じ? Sub test01() Dim i As Long, t As Long, k As Long With ActiveSheet For i = 6 To .UsedRange.Cells(.UsedRange.Count).Row If .Cells(i, "L") = "東京都" Then t = t + Application.Sum(.Cells(i, "C"), .Cells(i, "D"), .Cells(i, "E")) ElseIf .Cells(i, "L") = "神奈川県" Then k = k + Application.Sum(.Cells(i, "C"), .Cells(i, "D"), .Cells(i, "E")) End If Next End With MsgBox "東京都:" & t & " 神奈川県:" & k End Sub
- ASIMOV
- ベストアンサー率41% (982/2351)
>L列のデータが「東京都」と「神奈川県」であれば これって、例えば L10セルに「東京都、神奈川県」と入っていたら という事でしょうか? だとすると >「東京都:50 神奈川県100」というように表示 は、意味が通じません C、D、E列に東京都と神奈川県のデーターの両方が入っている訳ではなさそうですし...
お礼
merlionXXさんこんばんは。いつも拝見しております。言葉が足りない部分までくみ取っていただけたようなご解答ありがとうございました。完璧にできました。