- ベストアンサー
sumifのように条件に見合う合計を「数値」ではなく「データ(セル)」の合計を集計したいのですが
SUMIFを使って合計範囲の数値の合計を求めるように、合計範囲の「データが入力されているセル」の合計を求めたいのですが、何かいい関数はありませんでしょうか? 言い換えると、COUNTAを使ってセルの個数を求める場合に検索条件をSUMIFのように特定の検索条件を指定できる関数です。 いろいろ探しましたがうまい方法が見当たりません。 使用方法としては、各曜日ごとのメニュー別の売上金額の合計と人数の合計を求めようとしています。 ワークシートに入力されてるデータは ・各曜日 ・顧客名 ・メニューと支払われた金額 です。 SUMIFを使って、検索条件に各曜日をあてはめ、曜日ごとのメニュー別売上は集計できました。 金額が入力されているセルを合計すれば各メニューごとの人数まで集計できるはずなのですが、SUMIFが「数値」しか集計できない為にそれに代わる関数を探しています。 どうぞよろしくお願い致します。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! No.2・7です! たびたびごめんなさい。 大きく勘違いしていました。 No.7の回答は無視してください。 No.4さんの補足に >求めたいのは、月曜日にメニューAに対して金額の入力されたセルの数です。 とありましたので三たび顔を出してしまいました。 ↓の画像のG3セルに =SUMPRODUCT((A2:A1000=F1)*(C2:C1000<>"")) という数式を入れています。 これでF1セルに曜日を入力すれば、その曜日のメニューAのセル数が表示されるはずです。 もし月曜日限定であれば =SUMPRODUCT((A2:A1000="月")*(C2:C1000<>"")) でもOKかと思います。 尚、数式は1000行まで対応できるようにしています。 今度は希望に近い形になったでしょうか? 以上、参考になれば幸いです。m(__)m
その他の回答 (7)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは!No.2です。 たびたびごめんなさい。 色々方法はあるかと思いますが、 ↓の画像で二通りの方法をやってみました。 H2セルはDSUM関数を使っています。 顧客名での集計もできるようにしてみました。 数式は =IF(COUNTBLANK(F2:G2)=2,"",DSUM($A$1:$D$1000,3,F1:G2)+DSUM($A$1:$D$1000,4,F1:G2)) H6セルは単純にSUMIF関数だけで =SUMIF(A2:D1000,G6,C2:C1000)+SUMIF(A2:D1000,G6,D2:D1000) という数式を入れています。 この場合曜日だけが集計条件です。 尚、両方とも1000行まで対応できる数式にしていますので データが増えても対応できると思います。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
解答No4です。 メニューの列が分かれてそれぞれの列に数値が入力されているのでしたらSUMIF関数で合計の値は求められますね。 ところで例えば月曜日でメニューAでデータの入力されている数は次のようにして求めることができます。 =SUMPRODUCT((A2:A100="月")*(C2:C100<>""))
お礼
ありがとうございました! 希望通りのことができました。 「SUMPRODUCT」ってべんりですね。 「<>""」は空白以外の...指定なんですね。 勉強になりました。
- cistronezk
- ベストアンサー率38% (120/309)
「COUNTIFS」関数が使えます。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/waza/count01.html#dcount
補足
ありがとうございます。 エクセルのバージョンを書き忘れましたが「2003」です。 「COUNTIFS」は使えませんね...すません。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA1セルに曜日、B1セルに顧客名、C1セルにメニュー、D1セルに売上額とそれぞれ文字があり、各データは2行目から下方に入力されているとします。 そこで曜日が 日 でメニューが あ である売上高を集計することはSUMIF関数ではできないですね。次のような式になります。 =SUMPRODUCT((A2:A100="日")*(C2:C100="あ")*(D2:D100)) またその時の件数は次のような式になります。 =SUMPRODUCT((A2:A100="日")*(C2:C100="あ"))
補足
ご丁寧にありがとうございます。 もう少し質問の内容を補足致します。 A列 B列 C列 D列 曜日 顧客 メニューA メニューB 月 Aさん \5,000 月 Bさん \6,000 火 Cさん \3,000 水 Dさん \4,000 木 Eさん \2,000 といった具合に表にしています。 求めたいのは、月曜日にメニューAに対して金額の入力されたセルの数です。 >A1セルに曜日、B1セルに顧客名、C1セルにメニュー、D1セルに売上額 であればよかったのですが、C列、D列、E列...と複数のメニューに対して支払われた金額を入力しています。 他の回答頂いた方の「COUNTIF」では「月曜日」の個数は求められても 「月曜日のメニューAに該当する個数」は求められませんでした。 SUMIFでいえば SUMIF=(検索範囲、”検索条件”、合計範囲)ですが、 希望するのは (検索範囲=曜日の列、”検索条件”=曜日、合計範囲=空白以外のセルの合計) なんです...無理でしょうか??
- Us-Timoo
- ベストアンサー率25% (914/3620)
条件がひとつなら COUNTIF 複数の条件なら DCOUNTA でお望みのことができませんか?
補足
ありがとうございます。 希望するのは、 (検索範囲=曜日の列、”検索条件”=曜日、合計範囲=空白以外のセルの合計) で合計する範囲を別途任意の範囲で指定したいんです... 「COUNTIF」や「DCOUNTA 」では出来ませんでした。すいません。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 元データが具体的にどのようになっているか判らないので・・・ あくまでヒントだけですが、 SUMPRODUCT関数・DSUM関数・SUBTOTAL関数などが使えるような気がします。 Excel2007であればSUMIFS関数というものもあるはずです。 同項目のデータは縦に並んでいることが基本ですけどね。 この程度しかお答えできないので あまりお役に立てないかもしれません。 ごめんなさいね。m(__)m
補足
ありがとうございます。ご丁寧にすいません。 「SUBTOTAL」は惜しいんですよね... これで合計範囲を別途指定できればよかったんですが... ちなみにSUMIFSは手持ちのエクセルが2003なのでダメでした。
- kmetu
- ベストアンサー率41% (562/1346)
countif とかではだめでしょうか。
補足
ありがとうございます。 希望するのは、 (検索範囲=曜日の列、”検索条件”=曜日、合計範囲=空白以外のセルの合計) で合計する範囲を別途任意の範囲で指定したいんです... 「COUNTIF」はだめでした~
お礼
ありがとうございました。 希望通りのことができました!完璧です。 ご丁寧に細かく教えて頂いた感謝しております。 大変勉強になりました。