• 締切済み

エクセル2003でお弁当の集計

50種類お弁当(単価は同じではない)を、15人の人が20日間それぞれに注文するものとして、次のように集計できるワークシートを作りたいです。 ・毎日、たとえば該当するお弁当の種類を書いた行にあるセルにチェックを入れる操作だけで、日々のお弁当屋さんに支払う金額の集計ができて、かつ、 ・初日からチェックを入れた日までの各人の合計支払い金額が勝手に集計できている、 というようにしたいです。 日々の合計位ならまだ単純に思えるのですが・・。どうやったらいいでしょうか?

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.2です。 補足の件で・・・ とりあえず名前定義の方は上手くいったようですね? エラーの件ですが、おそらく名前定義した範囲の行数とB列の行数が一致していないのではないかと思います。 前回の画像でA2~A10セルの範囲が名前定義した「種類」の範囲にしていますので、 質問の >列方向の指定範囲はどこまででしょうか? はA2~A10とします。 ※ この範囲指定は実際のデータに合わせてください。 それに伴って数式もB列の範囲が変わってきます。 仮にA2~A50セルの範囲を名前定義したのであれば、数式も =IF(COUNTA(B2:E2),SUMPRODUCT((B2:E2=種類)*(Sheet2!$B$2:$B$50)),"") のようになります。 ただ、本来の希望としてはある日付の「弁当の種類」・「個数」・「その日の金額」を把握したい! というのが本筋のようですので、余計なお世話かもしれませんが、 ↓の画像のようにSheet3のA1セルに日付の数値を入力するとその日のデータを表示する方法はどうでしょうか? もちろんSheet1の空いているところでも構いませんが、今回はSheet3に作成してみました。 名前定義の部分は前回同様とします。 (前回は品名のプルダウン表示にしていましたが、当然数字でも構いません) 画像で説明させていただくと、 Sheet3に作業用の列を2列設けています。 作業列1のE2セルに =INDEX(OFFSET(Sheet1!$B$1:$E$1,MATCH($A$1,Sheet1!$A$2:$A$32,0),,1),,ROW(A1)) 作業列2のF2セルに =IF(AND(E2<>0,COUNTIF($E$2:E2,E2)=1),MATCH(E2,種類,0),"") という数式を入れ両列ともSheet1の人数分だけ下へオートフィルでコピーしておきます。 A4セルに =IF(COUNT(F:F)<ROW(A1),"",INDEX(種類,SMALL($F$2:$F$5,ROW(A1)))) B4セルは =IF(A4="","",COUNTIF(OFFSET(Sheet1!$B$1:$E$1,MATCH($A$1,Sheet1!$A$2:$A$32,0),,1),A4)) C4セルに =IF(COUNTBLANK(A4:B4),"",B4*VLOOKUP(A4,Sheet2!A:B,2,0)) という数式を入れ、最後にA4~C4セルを範囲指定 → C4セルのフィルハンドルで人数分だけ下へコピー! これで画像のような感じになります。 A1セルに表示したい日付を入力すればその日のデータが表示されるはずです。 ※ Sheet1のデータは1日~31日まで(2行目~32行目) ※ Sheet1の人数はB~E列の4人 としていますので、数式の範囲指定部分は適宜変更してみてください。 以上、長々と書きましたが参考になりますかね?m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • ka28mi
  • ベストアンサー率41% (969/2314)
回答No.4

No.1,3で回答した者です。 >D3からH3にはどんな式が入っていますか? 個人のお名前と、お弁当のお名前が交差する場所ですよね? ここには、式は入りません。 No.3の回答の下から11行目、「それぞれのお名前と、お弁当名が交差する場所に、注文個数を入れます」に該当しますので、直接、申し込み個数を入力します。質問者さまの最初の想定「チェックを入れる」代わりに、申し込み個数を入力するわけです。 蛇足ながら、D3からH3となっているのは、私が、その数で仮に作ってみたからで、実際の人数や余白行によっては、当然変えてください。ここは、お弁当1種類ごとに、人のお名前が入っている列分の申し込み個数を合計するのが目的です。 >何とか理解できそうですが、まだ先に進めません。 ネット上で、文字だけで、ご説明するのは、なかなか難しいですし、読んでおられても理解しづらいですよね。 もっと説明がうまければ良かったのですが。申し訳ありません。 ただ、読んで理解しようとなさるよりも、遠回りに感じられると思いますが、一度、順番に作って見ることを、おすすめします。 それで、「ここに、こんな変なエラーが出ちゃったよ」、「ここが、こういう値になるはずなのに、ならないよ」と言っていただく方が、説明もしやすいです。 ハードルが高いかもしれませんが、一種類作れば自信も付きますから、頑張ってくださいね。

全文を見る
すると、全ての回答が全文表示されます。
  • ka28mi
  • ベストアンサー率41% (969/2314)
回答No.3

えすNo.1で回答した者です。 >書くお弁当の番号も入るようにしたい。 単純な方法としては、1日あたりの列を3つに増やします。 お弁当、お弁当番号、単価ですね。 INDEX関数は、(導出元になる表、行、列) MATCH関数は、(照合元、照合先、同一か近似値かの区分「FALSE」は同一)です。 詳しくは、ネットで検索して頂くと、もっと詳しい説明が出てきますから、検索してみてください。 お弁当番号はA列に入れていますから、A列の情報を引いてくるには、 =INDEX(Sheet1!$A:$C,MATCH(Sheet2!D2,Sheet1!$B:$B,FALSE),1) になります。 単価は3列目に入っていたので、最後に「3」としたものが、今度は「1」になるわけです。 ただ、「お弁当を番号で注文したい」なら、毎日の値段の合計と、毎月の個人の合計額以外に、「どのお弁当番号がいくつか」も必要ではないでしょうか? そうするとチェック式になりそうですね。ざっくり作って見ると500kbでした。 文字が多少大きくなっても1000にはいかないでしょうから、作業に手間取るほどの大きさにはなりませんけれど。 形としては、1日あたりの発注シートと、月ごとの合計シートを作る方法です。 まず、シートの基本形を作ります。 A列にお弁当番号、B列にお弁当名、C列に金額を入れます。 3行目くらいから始めるといいですよ。 お弁当情報を足したくなった時の用心に、2つ3つ列を空けて、G列くらいから2行目に人の名前を入れていきます。 最後の2列は合計個数、合計金額としますが、これも人が増えた時の用心に、10列くらい空けた方がいいですよ。 合計個数には、「=SUM(D3:H3)」、合計金額には「=C3*人の最終列3」として、全部の行にコピーすると、その日のお弁当あたりの個数と金額が出ますね。 ちなみに、お弁当の種類が増えた時の用心に、行も10行ほど空けた方がいいと思います。 最終行の最終列に、合計を入れると、1日あたりの合計額が出ます。 D3くらいでウィンドウ枠を固定しておくと、人やお弁当の欄を間違いにくくなるので、おすすめです。 また、名前の行でフィルタリングを設定しておくと、注文するお弁当の種類をチェックしやすくなります。 これを基本シートとして、日付分増やします。 まずは、シートの名前を「1」としてシートコピーをしていきます。最初にできるコピーは「1(2)」となるでしょうから、次は2つとも選んでコピー、その次は4つとも選んでコピーとしていくと、「1(32)」まで簡単にできると思います。 なぜ、32まで作るかと言うと、暦通りの31日分+合計シートです。 20日というのは営業日だろうと思いますが、21日の時もありますよね?発注する時に「今日は何営業日目だっけ?」となる時もあるでしょう。ややこしくならないように、日付とシートを同じにしておくと、迷わないで済みます。 シートの名前を1~31と合計に変えます。 次に合計シートに合計のための関数を設定します。 下のHPを見ていただくと分かりやすいです。 http://kokoro.kir.jp/excel/3d.html お弁当と名前が交差する欄に、「=SUM('1:31'!D3)」と直接入力でも大丈夫ですが。 ただ、ここで出したいのは個数ではなく金額なので、この後ろに、単価と掛ける式を足します。「=SUM('1:31'!D3)*$C3」とするわけです。 そのまま、全部に式をコピーしてしまい、最終行に列ごとの合計式を入れます。これで月当たりの個人合計額が分かります。 実際の使い方ですが、その日の日付のシートを開きます。 それぞれのお名前と、お弁当名が交差する場所に、注文個数を入れます。 1日の注文個数と合計額は、各シートで分かります。 月当たりの、個人からの集計額は、合計シートで分かります。何をどれだけ注文したかも、このシートで分かります。 使い方の注意ですが、私は60×30で作ってみました。 データが小さいですから、実際よりコンパクトになっていると思いますが、許容範囲だと思います。ただ、これ以上、大きくなるようだと、マクロとかを使う方が、実際に使う時にストレスが少ないかなと思いますね。 そして、大事な事は、月の途中でお弁当や人を訂正しない事です。 集計は、位置だけで計算していますから、内容を訂正してしまうと正しくなくなります。 一部の訂正は追加で対応し、全面的に変わる場合はファイルを新しいものにしてしまうことを、お勧めします。もともと、1カ月1ファイルの想定です。 これで、質問者さまの要望どおりになるでしょうか?

shohei2004
質問者

補足

すみません、基本シート作りのところで、個数を求めるD3からH3にはどんな式が入っていますか?月ごとの合計シートは何とか理解できそうですが、まだ先に進めません。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 色々方法はあると思いますが・・・ 一案です。 ↓の画像のようにSheet2に弁当表を作成しておきます。 やり方だけの説明になりますので、データは少なくしています。 Sheet2のA2~最終行までを範囲指定 → 名前ボックス(画面左上のセル番地が表示されるところ)に 仮に 種類 と入力しEnter! これでSheet2のA2以降の範囲指定セルが「種類」と名前定義されました。 (A1セル以降を範囲指定 → メニュー → 挿入 → 名前 → 作成 → 「上端行」を選択でも同じです。 次にSheet1のB2~E32(最終日)までを範囲指定 → メニュー → データ → 入力規則  → リスト → 「元の値」の欄に =種類 としてOK これでSheet1の範囲指定したセルすべてにSheet2のA列データがリスト表示できます。 この中から弁当種類が選択できます。 次にSheet1のF2セルに =IF(COUNTA(B2:E2),SUMPRODUCT((B2:E2=種類)*(Sheet2!$B$2:$B$10)),"") としてずぃ~~~!っと下へコピー! 合計欄のB33セルに =SUMPRODUCT((COUNTIF(B2:B32,種類)*Sheet2!$B$2:$B$10)) として列方向へオートフィルでコピーすると 画像のような感じになります。 ※ 日計・合計が交差するF33セルだけは別にSUM関数で行か列の合計をします。 あくまで一案ですので、他にも良い方法はたくさんあると思います。 参考になりますかね?m(_ _)m

shohei2004
質問者

補足

御回答ありがとうございます。仰る通りにやってみているつもりなのですが、まだうまくいきません。sheet1のB2からE2までのセルにはリストから選んだお弁当の種類がはいりましたが、 (18行目)Sheet1のF2セルに=IF(COUNTA(B2:E2),SUMPRODUCT((B2:E2=種類)*(Sheet2!$B$2:$B$10)),"") のところでF2セルに「#N/A」のエラーが出ます。 確認ですが、(6行目)「Sheet2のA2~最終までを範囲指定」の際、列方向の指定範囲はどこまででしょうか?ここで少し迷いました。

全文を見る
すると、全ての回答が全文表示されます。
  • ka28mi
  • ベストアンサー率41% (969/2314)
回答No.1

エクセルの典型例ですので、色々な方法があると思います。 私でしたら、あまりサイズを大きくしたくない、内容に変更があった時のメンテナンスを少なくしたい、詳しい知識がない人でも処理できるようにしたので、下のような手順にします。 (1)お弁当表の作成 ・シート1に、A列「番号」、B列「お弁当名」、C列「単価」を入れます。 ・D列以降は、販売停止になったり、新商品発売開始などの情報を、随時入れたくなれば入れます。 番号は別になくてもよいのですが、個人的にデータを扱う時は番号を入れておく方が、便利になります。 (2)集計シートの作成 ・A列には、シート1のB列の情報を「=Sheet1!B3」のように、数式で持ってきます。 ・C列3行目から人名を入力します。 ・2行目にはD列から1行おきに、1日、2日という日付データを入力します。  これで縦に人名、横に日付けの表が出来上がります。  日付データを1列おきにするのは、お弁当の種類と金額を設定するためです。 ・D列以降のお弁当の種類を入れるセルに、  データの入力規則で「リスト」を使い、プルダウンでお弁当を選べるようにします。  リスト設定を$A:$Aにしておけば、お弁当に追加があっても選べます。  ご存知と思いますが、1つのセルに設定をして複写すれば大丈夫です。 ・E列以降の金額を入れる欄に、シート1から単価を引いて来ます。  下の関数になります。  「=INDEX(Sheet1!$A:$C,MATCH(Sheet2!D2,Sheet1!$B:$B,FALSE),3)」   ・縦横それぞれで合計を計算します。  縦の合計が1日単位、横の合計が一カ月の人単位です。 質問者さまのイメージされているチェック式だと、1日あたり1シートになるので大きいんですよね。 集計は、そちらの方が単純ですが。

shohei2004
質問者

補足

適切で詳しいご回答ありがとうございます。追加となって申し訳ございません。お弁当の注文の際に、お弁当の番号で注文したいため、集計表にはお弁当の品名だけではなくsheet1でつけた各お弁当の番号も入るようにしたいです。落ち着いて考えれば良いのでしょうがまだINDEX関数等うまく使いこなせないため、お教え下さい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 異なる範囲の集計(合計)

    誰かアドバイスをお願いします。 エクセルで下記の様な異なる行数(範囲)を自動集計させたい場合はどうすればよろしいでしょうか?       A      B      C     D        E      日付    注文NO  金額   注文金額計  日別注文金額合計 1   5月1日     1     50     150       250 2                  50       3                  50                4             2    50     100 5                  50                    6   5月2日     3     50     50        150 7             4     50    100 8                   50                                            やりたい事は、D列へ注文金額計に注文NO別の合計金額を集計させる事(注文NOごとの一番上の行のみです。)  と E列へ日別の注文金額合計を集計させる事です。(日別の一番上の行のみに表示)   sumif関数を使えばうまく行きそうなのですが、問題が2つあります。 (1)集計条件の日付や注文NOは、重複している場合は、一行のみ表示の仕様です。(他ファイルからデータを貼りける為、その様な仕様になり、極力入力する事は避けたいです。) (2)合計範囲の行数が一定ではないので出来ればEやD列の全てのセルに関数なりを設置し、一番最上行のみに結果を表字したい。例えばsumif関数をE,D列全ての行に設定してしまうと同じ集計結果が何行にも渡って表示されてしまうのは避けたい。(上の例でいえばE列に150が何行も表示されてしまう。 かといって重複行の最上行のみに関数を設定するのは、一行ずつの作業になってしまう為、避けたい。 何かいい方法がないでしょうか?   個人的には、関数の方がやりやすいのでいいのですが、マクロやVBEでもあれば教えて頂けますでしょうか?

  • Excelの集計について教えてください。

    Excelの集計について教えてください。 集計すると、集計合計が挿入されますが、その行に全ての項目名を表示する方法はありませんか? (例) 担当 顧客名  品名 単価   数量 ◎◎◎ ・・・・ NNNN 500    5 ◎◎◎ ・・・・ NNNN  500    58   ・・・・;合計  1000   63 で表示されますが、担当名・品名 など全ての項目名を合計行に表示して 集計する方法はありませんか? 宜しくお願い致します。

  • EXCELで同じ分類のものを集計する

    ・EXCELで、「件名」「金額」「分類」等がひとつのデータ(行)になっている、簡易データベースがあります。 ・このデータベースは日々追加・更新されます。 ・「分類」には「A」「B」「C」があります。 ・「分類Aの金額」「分類Bの金額」「分類Cの金額」セルを、別の場所に用意しておきます。 データ(行)の「分類」を読み取り、「分類Aの金額」「同B」「同C」に、合計金額を表示させる方法は、ありますでしょうか? EXCELのソートの機能や集計の機能を使わずに、データが追加・更新されたら、セルに新しい合計値が表示されるようにしたいのです。 ご回答よろしくお願いいたします。

  • エクセル2007 集計について

    エクセルである月の集計を複数のセルの合計を別のシートに出したいのですが、ある月とは、2007/1とか年月を打ち込み その行のセルを別シートに集計させます。 そういったデータベース的な使い方は、エクセル2007ではできますか?

  • EXCELの集計で悩んでいます

    EXCEL2003で、 ・商品ID ・商品名 ・支店 ・在庫数 ・在庫金額 ・販売開始日 を商品IDごとに在庫数と在庫金額の集計を行いました。 行数は約1万、集計行は約1千あります。 ここまでは問題なく出来たのですが、 集計行には、商品ID集計として、在庫数と在庫金額の合計しかなく、 集計行のみにした場合、商品名と販売開始日が表示されません。 集計行に、商品名と販売開始日を追記するマクロを書きたいのですが (関数でもかまいません)、どなたかお知恵をお借りできませんでしょうか。 よろしくお願いいたします。

  • 《エクセル2000》「表示形式」で計算させることはできますか

    金額を集計するファイルがあって、現在このようになっています。 個数 金額(単価) ・   ・ ・   ・ ・   ・ ・   ・    金額合計(それぞれの行の、個数×金額) これを、「金額」のセルに、各行の個数×金額に相当する数値が出るようにしたいのだそうです。 (金額列を単純に合計すれば、金額合計がでるように) 手っ取り早い方法としては、「金額」のセルに、手計算で個数×金額の数値を入れればいいのですが、それはあまりに非効率なことに思います。 また、1列増やして単価を入れる列を作ればいいのかもしれませんが、スペースの都合で到底無理です。 そこで思ったのですが、もしや「表示形式」で計算させることはできるでしょうか。 例えば、単価のセルに2、金額のセルに2500と入れたら、金額セルの数字が自動的に5000になるような表示形式… (金額合計のセルの計算は、今までと同じ個数×金額の合計にしておけば問題ないと思います) 個人的にはすっきりしない仕様だと思うのですが、職場で頼まれてしまいました。 どうかお知恵をお貸し下さい。

  • エクセル 集計行をデータの次の行に表示させたい。空白セルを削除したい。

    基準となるグループの最後のグループの集計行はなぜか、選択範囲の下に表示されます。 例えば  1行目  会社 サービス 単価  回数  合計金額  2行目   A    1   100   2    200  3行目   A    2   150   3    450  4行目   B    4   1000   4    4000  5行目   C    3   500   10   5000     以下空白   :   :   :    :  (20行目)   ここまで空白 以上のような任意の表(1行目から20行目までデータが入力されています。上記のような3社で4行で終わる場合もあれば、5社で10行という場合もあります)で会社ごとの合計金額を集計したい時に、(1行~20行を選択し、グループの基準:会社 集計の方法:合計 集計するフィールド:合計金額 集計行をデータの下に挿入という設定)  1行目  会社 サービス 単価  回数  合計金額  2行目   A    1   100   2    200  3行目   A    2   150   3    450  4行目     A集計            650  5行目   B    4   1000   4    4000  6行目     B集計            4000  7行目   C    3   500   10   5000      以下空白   :   :   :    :  23行目     C集計            5000  24行目     総計             9650 となってしまいます。上記の参考データならば 8行目から22行目までが無駄に空白ができてしまいます。 これを、8行目にC集計を表示させることはできるのでしょうか? 集計後の表をコピーして他シートに貼り付けるマクロを組んでいます。 データによっては、1つの会社の集計が表示されません。宜しくお願いいたします。上記を満たすマクロでも結構です。

  • エクセル2003ですが、集計でわかりません

    エクセル2003ですが、集計でわかりません。 セルA1からA10までで、H18(といる指定英数字)に該当、セルB1からB10までで、(数値)3に該当、そして、セルC1からC10までの間で、この両者を満たすセルの数値(セルC1からC10までの間でこれに該当するものが複数ある場合は、それらの合計の数値)を、指定したセルD1に表示したい場合、セルD1へ入れる、関数式はどうなるのでしょうか? 仕事上必要になりました。 どなたか、教えていただけないでしょか?(急ぎます) ごめんなさい。

  • エクセルの「集計」について

     小売業で働いている者です。  5月27日、28日、29日の売上を、売上がたった順にエクセルに入れました。  入れているのは、日にち、担当者、金額、etcです。  これを、「並べ替え」で担当者順にしました。  各担当者の下に、売上を自動集計して入れたいのですが可能でしょうか。  5月27日、28日、29日、合計金額、とできれば4行で入れたいと思います。「集計」という機能があると思うのですが、自分でやってみても上手く行きません。  

  • エクセルの表での集計方法について

    エクセルの表での集計方法について 各項目の当初予算額とその合計金額が表示されています。 各項目間には、空白の行を入れておきます。そして、 各項目の当初予算額の上のセルには、実際に使った金額を入力できるようにしています。 まだ、予算を使っていない項目については、上のセルは空白のままです。 これで、支出した項目と支出してない項目が一目瞭然となります。 そして、 実際に使った金額が入力されている場合はその金額を用いて、まだ支出していない場合(上のセルが空白の場合)は、当初予算額を用いて合計し、当初の合計金額の上のセルに結果を表示します。 なにか、いい方法があれば、教えてください。

専門家に質問してみよう