プロが教える店舗&オフィスのセキュリティ対策術

画像のように店舗別・商品別の売上表があります。
計算式はIF関数を使っていますがこれでは商品が増えた時、かなり複雑になりそうで大変かなと思います。
もっと簡単な数式があればどなたかお教えください。
よろしくお願いします。

「Excelの計算式についてお教えください」の質問画像

質問者からの補足コメント

  • へこむわー

    失礼いたしました。
    急いで作ったので計算式を間違えていたようです。
    特別な計算式はありません。単純に〇が付いているところの計算です。
    よろしくお願いします。

      補足日時:2023/06/05 11:20

A 回答 (8件)

》 急いで作ったので計算式を間違えていたようです


言い訳は結構ッ!
間違いに気付いたならなぜ正しい数値に直さないのッ?
ズボラは回答者に失礼でしょッ!!
    • good
    • 0

ご質問者の掲出画像では、「商品A」の列がA列となっていますが、その左側に「項目/店舗」の欄があるので、実際にこのような表を作成することはできません。

そこで、No.3さんが、お示しになった表のように、「項目/店舗」の列をA列とすることにします。
その上で、画像の「計」の列、この説明ではJ列になりますが、J3セルに、

=SUMIF($B3:$I3,"○",$B$2:$I$2)・・・①

という数式を記述し、下方向へコピーする方法があります。

No.3さんがSUMPRODUCT関数を用いた方法をお示しになっています。

=SUMPRODUCT(B$2:I$2*(B3:I3="〇"))・・・②

B列からI列の間に列を挿入して、商品を増やすのであれば、②の数式のままでも自動的に範囲か拡張されます。
但し、I列の右側に商品を追加するとか、万一店舗が増えて、店舗Eの下にあらたな店舗を追加するようなケースでは数式を書き直ししなくてはいけません。No.3さんの回答は、そうしなくて済む工夫をお示しになったのだと思います。

ご質問者は
>商品が増えた時、かなり複雑になりそうで大変かなと思います。
と心配しておられるので、No.4さんのご指摘のように、
>後日のために!表の構成方法を考え直そう。
ということで、上記のような「末尾に商品追加」「表の右側に店舗追加」のケースをを前提に表を見直してみました。添付画像をご覧くたさい。

縦横を入れ替えて商品名を縦方向列挙に列挙、店舗名を横方向に列挙してテーブル化しました。その上で、別位置に合計欄を設置しています。

店舗Aの合計欄である、C3セルに

=SUMIF(テーブル1[店舗A],"○",テーブル1[[価格]:[価格]])・・・③

という数式を記述し右方向へコピーしています。
これにより、末尾に商品追加の場合は、テーブル機能により「そのまま」、表の右側に店舗追加の場合は、合計欄の右側に新店舗名追加し、G3セルをフィルコピーするだけで、集計可能となります。
「Excelの計算式についてお教えください」の回答画像7
    • good
    • 0

=SUMIF(C4:J4,"○",$C$3:$J$3)

    • good
    • 0
この回答へのお礼

ありがとうございます。
できました。(^^)/

お礼日時:2023/06/05 13:23

表の2行目(シート上の2行目?)が商品毎の単価等の足したい値。


店舗A~Eの店舗ごとに〇のついている欄のみの合計を計の列(J列?)に計算したい。
ということですよね?
であれば、SUMIF関数でいけそうな気がしますよ。

店舗A(4行目?)についてはJ4に
=SUMIF(B4:I4,"〇”,B2:I2)
とすればいけるでしょう。
ちょっと解説
B4:I4が〇の有無の条件範囲
B2:I2がその条件に適応した時に合計したい値の範囲
です。
こうしておけば
取り扱い商品が増えた場合に上の2つの範囲の変更だけで対応できると思います。
また、単価の変更にも対応できます。
老婆心:式中の単価が間違っていませんか?

目的の動作と、行と列が入れ替わっていますが、参考URL
SUMIF関数の使い方!条件を満たす範囲のデータだけを合計
https://allabout.co.jp/gm/gc/469316/
    • good
    • 0
この回答へのお礼

ありがとうございます。
できました(^^)/

お礼日時:2023/06/05 13:23

>商品が増えた時、かなり複雑になりそう


後日のために!
表の構成方法を考え直そう。
A____B____C
店舗A  商品A  7300
店舗A  商品C  1800
店舗A  商品F  2500
店舗B  商品C  1800
店舗B  商品G  1800
などのように。
後はピボットテーブルで処理すればいいでしょう。
    • good
    • 0

こんにちは



画像の計算内容がよくわからないのと、セル位置もなんだかわからないので勝手に解釈しました。

「各行で〇印のある列の価格(?)だけを合計する」
(ご提示の計算結果とは全く異なりますが、他に解釈のしようが無いので・・)

添付図では、J3セルに
 =SUMPRODUCT(B$2:I$2*(B3:I3="〇"))
の式を入力し、下方にフィルコピーしてあります。
(「〇」の字体は異字体が複数あるので、使っているものと同じ字体にする必要があります)


その上で、B:H列の間に列を挿入するなどして列数を可変にしたいのであろうと想像。
その場合は、J3セルの式を
=SUMPRODUCT(OFFSET(J$2,0,2-COLUMN(),1,COLUMN()-2)*(OFFSET(J3,0,2-COLUMN(),1,COLUMN()-2)="〇"))
とすれば良いと思ったのですが、Excel 2019(=当方の環境)ではエラーになってしまいますね。
Office 365環境であれば、上記の式で問題なく計算してくれます。

2019環境で何とかする場合を試行錯誤してみましたが・・
どうやらCOLUMN関数が悪さをしているらしいので、例えばK1セルに「=COLUMN(J1)-2」として、一旦数値を求めておいて、これを参照する形式にすれば可能ですね。
ただし、SUMPRODUCT関数では、これでも計算できないので、
 {=SUM(IF((OFFSET(J3,0,-K$1,1,K$1))="〇",OFFSET(J$2,0,-K$1,1,K$1),0))}
に変えて、「配列数式」として入力する必要があります。
「Excelの計算式についてお教えください」の回答画像3
    • good
    • 0

すみません。


店舗Aは、7300+1800+2500 なので11,600ではないでしょうか。
何か特別な計算があって、その結果16,660になるなら、その計算式も提示したほうが良いかと思います。
他の店舗も同様です。
    • good
    • 0

自分なら一覧表を作って、それをVLOOKUP関数などで参照し、変更される項目は一覧表側で管理するかな。



項目が増えることが見込まれているのであればメンテナンス性を考え、
一覧表から値を参照するような使い方をすると良いと思います。
    • good
    • 0

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