- ベストアンサー
この表の列合計を出すにはどんな式を書けばいい?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
単純に4/1のAクラスの合計を取るのではなくて、B11、B12に入れた値に対応した合計を出したい、って事かな? だとすると =SUM(INDIRECT(CHAR((B11=A1)*1+(B11=C1)*3+(B11=E1)*5+(B11=G1)*7+(B12="A")*0+(B12="B")*1+64)&"3:"&CHAR((B11=A1)*1+(B11=C1)*3+(B11=E1)*5+(B11=G1)*7+(B12="A")*0+(B12="B")*1+64)&"8")) って感じの式になります。 B11、B12の値に応じて「A2:A8」とか「B2:B8」とか「C2:C8」とかって文字列を作成し、その文字列をINDIRECT関数で「セル参照」に変換して、そのセル参照をSUM関数で合計しているだけです。 手抜きなので、列名は「A~Z」までしか対応していません。列名が「AA」以降になる場合は、もう一工夫が必要です。
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
簡単な方法: 今の表のA列に1列空列を挿入して表をB列からスタートしてI列までの配置にしておき C11に日付 C12にAorB があるとすると C13に =SUMPRODUCT((A1:H1+B1:I1=C11)*(B2:I2=C12)*B3:I8) メンドクサイ方法: 今の表の配置のままA列から表を配置 B11に日付 B12にAorB があるとすると B13に =SUMPRODUCT((SUBTOTAL(9,INDIRECT("R1C"&FLOOR(COLUMN(A1:H1)-1,2)+1,FALSE))=B11)*(A2:H2=B12)*A3:H8)
お礼
こういったアプローチもあるんですね、なるほど。あとできちんと解読してみます。ありがとうございました。BAにできずすみません。勉強になります。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばB13セルには次の式を入力します。 =IF(COUNTIF(1:1,B11)=0,"",IF(B12="A",SUM(INDEX(A:XX,3,MATCH(B11,1:1,0)):INDEX(A:XX,8,MATCH(B11,1:1,0))),IF(B12="B",SUM(INDEX(A:XX,3,MATCH(B11,1:1,0)+1):INDEX(A:XX,8,MATCH(B11,1:1,0)+1)),"")))
お礼
こういったアプローチがあるんですね。あとできちんと解読してみます。ありがとうございました。BAにできずすみません。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 月日が結合セルされていては、列が確定できませんので結合を解除します。 結合解除が駄目な場合は読み捨て下さい。 (1)1行目を選択して結合を解除→選択されている状態でCtrl+Gキー押下→セルの選択→ 空白を選択→OK→数式バーに=先頭セル(仮に=A1)を入力→Ctrl+Enter (2)B13に=SUM(OFFSET($A$3,,SUMPRODUCT((A1:H1=B11)*(A2:H2=B12)*COLUMN(A1:H1))-1,6)) 数式のセル範囲やOFFSET関数の第4引数(行数)はご例示を対象にしていますので 調整して下さい。
お礼
とても参考になる式でした。ありがとうございました。BAにできずすみません。
- 白石 勇夫(@sunbravery)
- ベストアンサー率46% (179/385)
単に合計だけでしたら =SUM(A3:B8,C3:C8,E3:E8,G3:G8) いかがでしょう。
お礼
助かりました、ありがとうございました。
お礼
助かりました、ありがとうございました。皆様のものが参考になったのですが考え方がわかりやすかったのと早かったのでBAはこちらへ。 おかげさまで皆様の意見を合わせてやった結果、自分がわかりやすいものとして下の式ができました。 B13セルへ以下を入力 =sum(offset(indirect(address(3,match(B11,A1:J1,0),1)),0,IF(B12="A",0,1),6,1)) この式にまた評価をいただきたいところですが(^^; 早くに書き込んでいただいたchie65535さん「Indirect+Sum」の考え方が参考になりました。ありがとうございました。 いろいろなアプローチがあってとても勉強になりました。