答え1
簡単な数式を作成できます:
=SUM(IF(B5:B21="Client 1",G5:AK21))
これは 2 つのステップで配列計算を実行します。
- 列 B = "クライアント 1" の場合、数字の行全体 (空白も含む) を返します。
- すべての行(そのほとんどには空白が含まれます)を取得したら、それらの値を合計するだけです。
必要に応じて、数式内の を外部セルへの参照に置き換えることができます"Client 1"
。また、数式の 2 番目の部分で月の範囲全体が正確であることを確認してくださいG5:AK21
。
答え2
優れた=SUM(IF())
アプローチを基に@デイブ使用することができますOFFSET
1 年の 12 か月それぞれに対応する列を選択する機能。
このOFFSET
関数は、高さと幅によって長方形の範囲を定義します。範囲の左上隅は、指定されたワークシート セルの下の行数と右の列数で定義されます。以下の方法では、黄色で強調表示されたセルを指定セル (セルE17
) として使用します。
範囲A2:E14
(下のスクリーンショットを参照)はいくつかの情報を提供します。メタデータ、ハイライトされたセルを基準として、12か月ごとの日次値の列がどこに配置されているかを示します。有用な値は、列オフセットそしてコラムたとえば、1月は黄色のセルの右1列目から日次値が31列を占め、2月は黄色のセルの右32列目から日次値が29列を占めます(セルの年を閏年以外の年に変更すると、B1
セルの値はE4
28に変更されます)。月#そして累積的な計算に必要な中間値列オフセットそしてコラム。
月別および顧客別のデータ合計を要約する式は、内訳形式で次のように記述できます。
=SUM(
IF(Sheet1!$B$18:$B$23=$A2,
OFFSET(Sheet1!$E$17,
1,
VLOOKUP(B$1,Sheet1!$A$3:$E$14,4),
6,
VLOOKUP(B$1,Sheet1!$A$3:$E$14,4)
)
)
)
または、完全な式として
=SUM(IF(Sheet1!$B$18:$B$23=$A2,OFFSET(Sheet1!$E$17,1,VLOOKUP(B$1,Sheet1!$A$3:$E$14,4),6,VLOOKUP(B$1,Sheet1!$A$3:$E$14,5))))
ここで、メタデータと日次データはワークシートに含まれていると想定されますSheet1
。
この数式は 1 月/クライアント 1 に適用され、以下のスクリーンショットに部分的に示されているように、他の月とクライアントの残りのセルにコピーできます。結果#N/A
にエラーが発生しないように、メタデータと結果テーブルで使用される月の名前が完全に一致していることを確認してください。
関数の 2 番目と 4 番目の引数OFFSET
は 1 と 6 です。これは、データが黄色で強調表示されたセルの後の最初の行から始まり、示されている例では 6 行のデータがあるためです。行数が異なる場合は、正しい値を代入するだけです。
3番目と5番目の引数は、単に関数を使用してVLOOKUP
検索します。列オフセットそしてコラム関係する月のメタデータの値。