• ベストアンサー

エクセルでの集計方法

A列に商品名、B列に出荷した数量が入力された一枚のシートがあり、これが12ヶ月分=12枚のシートがあります。これら全てのシートを集計し、それぞれの商品が12ヶ月でいくつ出荷されたのかを集計したいです。 この場合は串刺し演算を応用するのでしょうか?・・・・ 初心者で申し訳ありませんが、最も効率的な方法をご教授いただければと思います。

noname#245281
noname#245281

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

>12枚のシートにて、「商品名」、「数量」の他に、「単価」を集計したい場合、どの部分の関数を変更すれば良いでしょうか?  今仮に、Sheet1~Sheet12のC列に単価が入力されているものとします。  その場合、まず、作業用シートのE2セルに入力する関数を次の様なものに変更してから、作業用シートのE2セルをコピーして、作業用シートのE3以下に貼り付けて下さい。 =IF(ISERROR(1/(ROWS($2:2)<LOOKUP(9E+307,$B:$B)+0)),"",INDIRECT("'"&INDEX($A:$A,MATCH(ROWS($2:2),$B:$B)+1)&"'!A"&ROWS($2:2)-INT(LOOKUP(ROWS($2:2),$B:$B))+ROW(Sheet1!$B$3))&TRIM(TEXT(SUM(INDIRECT("'"&INDEX($A:$A,MATCH(ROWS($2:2),$B:$B)+1)&"'!C"&ROWS($2:2)-INT(LOOKUP(ROWS($2:2),$B:$B))+ROW(Sheet1!$B$3))),"[=0] ;◆-0000000;◆0000000")))  尚、上記の関数は、単価が9,999,999円までの場合にしか対応しておりません。  もし、単価の桁数が7桁を上回る事もあり得る場合には、上記の関数内に2箇所ある「0000000」の部分の0の個数を、想定される最高額の桁数に合わせて増やして下さい。  次に、集計用シートのA4セルに入力する関数を次の様なものに変更して下さい。 =IF(ROWS($4:4)>COUNT(作業用!$D:$D),"",LEFT(VLOOKUP(ROWS($4:4),作業用!$D:$E,2,FALSE),FIND("◆",VLOOKUP(ROWS($4:4),作業用!$D:$E,2,FALSE)&"◆")-1))  次に、集計用シートのB4セルに入力する関数を次の様なものに変更して下さい。 =IF($A4="","",SUMIF(作業用!$E:$E,VLOOKUP(ROWS($4:4),作業用!$D:$E,2,FALSE),作業用!$F:$F))  次に、集計用シートのC4セルに次の関数を入力して下さい。 =IF(ROWS($4:4)>COUNT(作業用!$D:$D),"",REPLACE(VLOOKUP(ROWS($4:4),作業用!$D:$E,2,FALSE),1,FIND("◆",VLOOKUP(ROWS($4:4),作業用!$D:$E,2,FALSE)&"◆"),)+0)  次に、集計用シートのA4~C4の範囲をコピーして、同じ列範囲の4行目以下に貼り付けて下さい。  その他は回答No.3と同様です。

noname#245281
質問者

お礼

細かくご回答いただいたにも関わらず、お礼遅くなりまして申し訳ありません。少しバタバタしていました。 ご回答に基づいて編集することができました。画像なども付けてくださり、本当にありがとうございました。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

>この場合は串刺し演算を応用するのでしょうか?  確かに串刺し計算を使用した方が簡単ですが、同一の商品のデータを入力する位置は、12枚のシートに全てに亘って、必ず同じセルとしなければならず、商品名が並んでいる順序を順不同にする事も出来ない事は無論の事、例え12箇月の間に途中で出荷しなくなった商品があったとしても、空いた行を詰めて次の行に入力されていた商品のデータを入力したり、新に別の商品のデータを入れる事は出来ません。(正確に言いますと、その様な事をすると合計値として誤った値が表示されてしまいます)  以下の方法は、必ずしも効率的とは申せませんが、12枚の各月のシートに商品名を入力する際に順序を気にする事無く入力する事が出来、その月に出荷した商品のデータのみを入力するだけで済む方法です。  今仮に、月毎のデータを入力するための12枚のシートのシート名がSheet1~Sheet12であるものとし、それらのシートの3行目に「商品名」や「数量」といった項目名が入力されていて、実際の商品名データや数量データは4行目以下に入力されているものとします。  まず、各月のデータを入力する12枚のシートの他に、新たに2枚のシートを作成し、その各々のシート名を例えば「集計用」と「作業用」等として下さい。  次に、作業用シートの A2セルに    Sheet1 A3セルに    Sheet2 A4セルに    Sheet3 A5セルに    Sheet4 A6セルに    Sheet5 A7セルに    Sheet6 A8セルに    Sheet7 A9セルに    Sheet8 A10セルに   Sheet9 A11セルに   Sheet10 A12セルに   Sheet11 A13セルに   Sheet12 という具合に、各月のデータを入力する全てのシート名を残らず入力して下さい。(入力する順序は必ずしも1月から12月までの順番ではなくとも構いません)  次に、作業用シートのB1セルに0.5と入力して下さい。  次に、作業用シートのB2セルに次の関数を入力して下さい。(式の中で指定されているSheet1!$B$3セルは、項目名が入力されているセルの事です) =IF($A1="","",MAX(B$1:B1)+IF(ISNUMBER(1/COUNT(INDIRECT("'"&$A2&"'!B:B"))),MATCH(9E+307,INDIRECT("'"&$A2&"'!B:B"))-ROW(Sheet1!$B$3),0))  次に、作業用シートのB2セルをコピーして、作業用シートのB3~B13の範囲に貼り付けて下さい。(誤ってB14以下にまで貼り付けてしまったとしても、特に問題にはなりません)  次に、作業用シートのE2セルに次の関数を入力して下さい。 =IF(ISERROR(1/(ROWS($2:2)<LOOKUP(9E+307,$B:$B)+0)),"",INDIRECT("'"&INDEX($A:$A,MATCH(ROWS($2:2),$B:$B)+1)&"'!A"&ROWS($2:2)-INT(LOOKUP(ROWS($2:2),$B:$B))+ROW(Sheet1!$B$3))&"")  次に、作業用シートのF2セルに次の関数を入力して下さい。 =IF($E2="","",INDIRECT("'"&INDEX($A:$A,MATCH(ROWS($2:2),$B:$B)+1)&"'!B"&ROWS($2:2)-INT(LOOKUP(ROWS($2:2),$B:$B))+ROW(Sheet1!$B$3)))  次に、作業用シートのG2セルに次の関数を入力して下さい。 =IF($E2="","",IF(COUNTIF(E$1:E2,$E2)=1,"#"&$E2,""))  次に、作業用シートのD2セルに次の関数を入力して下さい。 =IF($G2="","",COUNTIF($G:$G,"*?")-COUNTIF($G:$G,">"&$G2))  次に、作業用シートのD2~G2の範囲をコピーして、同じ列範囲の3行目以下に(商品の種類数の12倍の数を上回るのに十分な行数となるまで)貼り付けて下さい。  次に、集計用シートのA4セルに次の関数を入力して下さい。 =IF(ROWS($4:4)>COUNT(作業用!$D:$D),"",VLOOKUP(ROWS($4:4),作業用!$D:$E,2,FALSE))  次に、集計用シートのB4セルに次の関数を入力して下さい。 =IF($A4="","",SUMIF(作業用!$E:$E,$A4,作業用!$F:$F))  次に、集計用シートのA4~B4の範囲をコピーして、同じ列範囲の4行目以下に(商品の種類数を上回るのに十分な行数となるまで)貼り付けて下さい。  これで、集計用シートの4行目以下に、各商品名毎の年間の出荷数量が表示されます。

noname#245281
質問者

補足

とてもご丁寧にご回答いただき、大変恐縮です。本当にありがとうございます。 一度にお聞きすれば良かったのですが、追加で質問させていただきます。 12枚のシートにて、「商品名」、「数量」の他に、「単価」を集計したい場合、どの部分の関数を変更すれば良いでしょうか? また、実はこちらの都合上、「商品名」が同じでも「単価」が違う商品があるのですが、同じ名前の商品でも「単価」の違いで判別させて分けて集計するのは難しいでしょうか? 何から何まで申し訳ありません。 お手間でしたら無視していただいて構いません。

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

こんばんは! すべてのSheetのレイアウトが同じであれば「串刺し計算」が利用できます。 ↓の画像のように12Sheet(Sheet1~Sheet12)がすべて同じ配置で、数量が「0」の場合でもA列にそのままの順序で品名があるとすると 合計用のSheet(仮にSheet13とします) Excel2007以降の場合として・・・ Sheet13のB2セルを選択 → 画面左上のオートサムのアイコン(Σ)をクリック  → Sheet1のB2セルを選択 → Shiftキーを押しながらSheet12のSheet見出しをクリック → Enter これで数式バー内には =SUM(Sheet1:Sheet12!B2) という数式が入りますので、これをオートフィルで下へコピー! これで完了です。 ※ 各Sheetのレイアウトがバラバラ(品名順が違う)等の場合は マクロ等別の方法を考える必要があります。m(_ _)m

回答No.1

違うシートのセルを参照するコマンドがあるので、それをぐぐってください。 できますよ。

関連するQ&A

  • EXCEL2007 集計方法を教えて下さい。

    EXCEL2007 集計方法を教えて下さい。 sheet1は、商品の出荷データが入っています。 A列・・得意先コード、B列・・品番、C列・・出荷数 sheet2で集計します。 A2以降に商品コードが入力してあります。 A1に得意先コードを入力すれば、sheet1のA列を参照し、該当得意先の商品出荷数をsheet2のC列に集計したいのです。 (sheet1のデータは羅列です。 例えば、山本屋のりんご購入履歴が1行目や10行目21行目と入力されているイメージです。

  • エクセルで集計

    エクセルで集計 シート1に1つの列に各支店名、2つ目の列に各商品名、3つ目の列に商品個数がランダム入力されているデータをシート2に自動で整理し集計したいのですが、2つの列の集計は関数SUMIFできるのですが、例えば、「各支店の商品個数の集計」など、「各支店の各商品の個数の集計」などの3つの列の集計方法を分かる方、いましたら教えてください。宜しくお願いします。

  • エクセルの集計

    エクセルでの集計(集計と呼べるか解りませんが)についてです。 A列に品番 A-1・A-2・A3・・・が入力されています。B列に品番の残数量 300・500・500・・・が入力されています。品番と残数量で1つの表になっています。 上記の表を基に、他のセルに使用数量を入力して行くと、使用した数量内の品番と数量が自動で集計され、使用数量の下や隣に表示される様にしたいのですがどの様な方法があるでしょうか? (例)C1に使用数量:500と入力すると指定したセル(C2~で品番と数量は別のセルに分けます)にA-1:300 / A-2:200 D1に500と入力すると指定したセル(D2~)にA-2:300 / A-3:200 と、表の上(下からの場合もあります)から使った分を引いて行かれ、集計され、表示したいのです。 宜しくお願いします。 補足 使用した数量と使用した内訳は同じシート内で別の表としています。入力した使用数量の中に、どの品番が何キロ使用されていて、その品番が無くなったら次の品番を何キロ使用したかを自動で集計したいのです。

  • エクセル 離れたデータを抽出して集計

    関数で抽出・集計をしたいのですが、式の意味や組み方なども教えていただきたいです。 また、ピボットテーブルでもできないか考えています。 添付画像が見にくいのですが A列からU列まで オーダーNO  商品  オーダー数  単価  合計  在庫  出荷1  出荷数  書類  出荷2  出荷数  書類 と出荷5~書類まで続きます。 求めたい集計表は、出荷日を軸にして、 出荷日を入力すると、自動的に オーダーNO それぞれのオーダーNOに対して、商品・出荷数・単価・合計 を一覧表で作成したいです。 先日、同じような質問をしたのですが、列数が変わるととたんにできなくなってしまい、関数の意味から理解して応用ができるようにしたいです。 よろしくお願いします。

  • 集計方法。

    4つの列を判定し集計する方法をご教授ください。 よろしくお願いします。 商品名 型式 配送数 数量 テレビ 21型  x1  5台 テレビ 28型  x1  3台 洗濯機     x1  1台 テレビ 21型  x2  5台 テレビ 21型  x1  3台 上記のように、ABCD列に入力された際、別シートにて集計をしたいと思います。 テレビ 21型  x1  8台 テレビ 21型  x2  5台 テレビ 28型  x1  3台 洗濯機     x1  1台

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

    こんにちは。 知恵をお貸しください。 現在職場でエクセルの集計シートを作成しています。 以下のような内容です。 -------------------------------------------------- (1)入力画面(シート1) いくつかの項目について検体数を入力する。毎日行います。 (2)集計結果(シート2) シート1の項目・検体数に応じて集計。 (3)日表(シート3) シート2の結果を日にちごとに貼り付ける。 実行ボタンなどを使用したい。 ※入力者は皆パソコン初心者なので、 (1)の検体数入力と(3)の実行ボタンを押すだけにしたいです。 -------------------------------------------------- (1)、(2)までは完成したのですが、 (3)の作業を作成できません。 (1)はドロップダウンリストから選択させ、 (2)はSUMIFで集計したものです。 (3)ではマクロで貼り付けの操作を組めば良いのですか? 日にちごとというのが難しく、身動きが取れません。 説明が下手で申し訳ありませんが、 ご教授願います。 よろしくお願いします。

  • Excel2007での串刺集計について

    Excel2007での串刺集計について、複数のファイルのあるシートを串刺集計する際の方法を詳しくご教授願います。 複数あるファイル名はまちまちです。 串刺したいシート名前もまちまちです。 しかし、シートのつくりは一緒です。 例えば、AファイルのaシートのA1、BファイルのbシートのA1、CファイルのcシートのA1を串刺ししたいのです。 当方Excel2007は初心者なので、宜しくお願い申し上げます。

  • 【Excel VBA】串刺し集計について

    Excel VBA初心者です。 串刺し集計について質問させてください。 同じ構成のシートが3つあります。中には数字や文字列が入っています(各シートの同じセルに数字と文字列が入ることは無し)。 串刺しのイメージで数字が入っているセルは合計を、文字列が入っているセルにはどれか1つ(規則もマクロに入れる、例としては○、×、-であれば○など)を合計用の同じセルにいれたいのですが、マクロの組み方をご教授願います。

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

    初心者です。 エクセルでの集計について教えてください。 sheet1にプルダウンやフォームで入力し、sheet2へ集計させたいのですがやり方がわかりません。 例えばプルダウンの場合、sheet1のA1で都道府県を選ぶとB1には対応する市町村が選択できるようにします。C1には任意で数字を入力していくとします。それを何行か入力します。はsheet2に、A列には都道府県別、B列にはAに対応する市町村、C列には任意の数字が合計されるようなことをしたいのですが・・・。こんな説明でご理解いただけるか心配ですが、なんとかやさしくお教えください。(フォームでの入力がスマートで格好がよさそう・・・。)マクロ等々もぜひともやさしくお教えください。

  • エクセル:月や週ごとの集計

    エクセルで A列に日付、B列に曜日、C列に商品の数量があります(2年分が連続で入力されています) このシートで曜日ごとの集計(例えば9月4日から9月9日までの合計)や 7月だけの合計を出す為の関数か機能はありますか WIN xp エクセル2003