プロが教えるわが家の防犯対策術!

タイトル通りなのですが詳細を書きます。

sheet1からsheet100まで全く同じフォーマットの集計
シートがあります。
シートを甲乙丙の3種類に分類するため、各シートのA1セル
、B1セル、C1セルの何れかに数字の「1」を入れてフラグを
立てています。
A2以下のセルには関数等で計算された数値があります。

ここでA1のセルに「1」が入力されているシートのみの数値を
甲合計シート、B1のセルに「1」が入力されているシート
のみの数値を乙合計シートにという感じで串刺し算で求め
たいのですが、SUMIFではうまくいきませんでした。
甲合計シートのA2セルに関数がおかしいのは承知で
=SUMIF(Sheet1:Sheet100!A2,A1=1,Sheet1:Sheet100!A2)
と入力してもダメでした。

当方VBAは全く知らないのですが、条件付の串刺し算は
関数では実現できないのでしょうか?

VBAでなら可能というのであれば、その方法を教えて
いただけませんか?

A 回答 (1件)

VBAならわかるのでサンプルを書いてみました。


「集計シート」という名前のシートを追加してから
このマクロ(と呼ぶんでしょうか?)をやってみてください。

Sub 集計()

 Dim xlSheet   As Worksheet
 Dim 集計シート  As Worksheet
 
 Set 集計シート = ThisWorkbook.Sheets("集計シート")
 集計シート.Range("A1:C1").Value = 0
 
 For Each xlSheet In ThisWorkbook.Worksheets
  If xlSheet.Name <> "集計シート" Then
   If xlSheet.Range("A1").Value = "1" Then
    集計シート.Range("A1").Value = _
     集計シート.Range("A1").Value + _
     Application.WorksheetFunction.Sum(xlSheet.Range("A2:A100"))
   ElseIf xlSheet.Range("B1").Value = "1" Then
    集計シート.Range("B1").Value = _
     集計シート.Range("B1").Value + _
     Application.WorksheetFunction.Sum(xlSheet.Range("A2:A100"))
   ElseIf xlSheet.Range("C1").Value = "1" Then
    集計シート.Range("C1").Value = _
     集計シート.Range("C1").Value + _
     Application.WorksheetFunction.Sum(xlSheet.Range("A2:A100"))
   End If
  End If
 Next

End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング