- 締切済み
エクセルの集計
職場で1000以上の店舗の売り上げ等を1年間の表にして下さいと言われたが、数が膨大で。 月ごとに分かれてるが、閉店したり新店があったりして、順番がちょっと、ばらばらですが、数が膨大で見つけるだけで一苦労して、一つの表にするのが非常に苦労してます。 A列に店番(4ケタの数字)があり、B列に店名があり、CDE列にその月の売り上げ等があります。 その繰り返しです、FGHIJ...。画像の通りです。 最終的にはA列に店番、B列に店名、CDH列以降は売り上げ等を記載。 なにか、いいやり方等があれば教え下さい。 何卒、宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- tamiemon96
- ベストアンサー率49% (658/1341)
データベースとして管理したうえでピポットテーブル が最も容易でか取り扱いや加工が簡単です。 表の形を次のようにしましょう。 A列 一連番号 B 年 C 月 D 日 E 店番 F 店名 G 売上金額 とにかく、「縦に長い表」になります。 この形で 店番、年、月、日 でソートをかければ、 月を基準として、エクセルの「集計」を使うだけで、店ごと、月ごとの売り上げが集計できます。 この形にしておけば、ピポットテーブルも、エクセルが要求するとおりに操作していけば、簡単に集計できますよ。 データベースの基本は、1つのデータは1行で表すことです。
- KURUMITO
- ベストアンサー率42% (1835/4283)
ピボットテーブルはその技術が無ければ対応は難しいですね。しかもデータが新たに追加されたら再度その操作を繰り返すことが必要となりますね。 関数で処理することでデータは即座に結果の表に反映されます。少し複雑な関数になりますが次のようにすればよいでしょう。 例えばシート1にはお示しのような表が入力されているとします。 そこでお求めの表ですがシート2に表示させることにしてA1セルには店コード、B1セルには店名、C1セルには金額2011/1月・・・・の文字列が入力されているとします。またA2セルから下方には店コードが予め1111などのように入力されているとします。 初めにC2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IFERROR(INDEX(Sheet1!$A:$BH,MATCH($A2,INDEX(Sheet1!$A:$BH,1,MATCH(C$1,Sheet1!$1:$1,0)-2-MOD(COLUMN(A1)-1,3)):INDEX(Sheet1!$A:$BH,2000,MATCH(C$1,Sheet1!$1:$1,0)-2-MOD(COLUMN(A1)-1,3)),0),MATCH(C$1,Sheet1!$1:$1,0)),"") その後にB2セルには次の式を入力して下方にドラッグコピーします。 =IFERROR(INDEX(Sheet1!A:KM,MATCH(A2,INDEX(Sheet1!A:BH,1,MATCH(INDEX(C$1:AL$1,1,MIN(IFERROR(INDEX(MATCH("*1*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*2*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*3*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*4*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*5*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*6*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*7*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*8*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*9*",C2:AL2&"",0),),100))),Sheet1!$1:$1,0)-2):INDEX(Sheet1!A:BH,2000,MATCH(INDEX(C$1:AL$1,1,MIN(IFERROR(INDEX(MATCH("*1*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*2*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*3*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*4*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*5*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*6*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*7*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*8*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*9*",C2:AL2&"",0),),100))),Sheet1!$1:$1,0)-2),0),MATCH(INDEX(C$1:AL$1,1,MIN(IFERROR(INDEX(MATCH("*1*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*2*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*3*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*4*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*5*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*6*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*7*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*8*",C2:AL2&"",0),),100),IFERROR(INDEX(MATCH("*9*",C2:AL2&"",0),),100))),Sheet1!$1:$1,0)-1),"")
- minosennin
- ベストアンサー率71% (1366/1910)
#1さんのご回答のとおりピボットテーブルが圧倒的に早いです。 前準備として各月のデータを縦に並べる必要があります。これは別シートにコピペなりでやってください。 この場合、見出し行は1月分の1行だけで充分です。 つぎにその別シートのデータの入力されている領域を選択して 「挿入」-「ピボットテーブル」をクリック 現れたピボットテーブルのフィールドリストで 「月」を「列ラベル」にドラッグ 「店番」を「行ラベルにドラッグ 「店名」を「行ラベルにドラッグ 「金額1」を「Σ値」にドラッグ 「金額2」を「Σ値」にドラッグ 「金額3」を「Σ値」にドラッグ これで縦横の集計表が表示されます。 このときΣ値が「データの個数」となっているときは、その右にある▼をクリックして、「値フィールドの設定」をクリックし、現れたダイアログで「合計」をクリックしOKをクリック。 これで縦横集計表ができあがりますが、この表をさらに編集したいときは、シート全体を別シートに「値貼付」すれば自由に編集できます。 説明が不十分で少し試行錯誤されるかもしれませんが、もし、ピボットテーブルを未体験ならこの機会にマスターしてください。今後ずっと役に立つはずです。
- nayuta_lot
- ベストアンサー率64% (133/205)
こんにちは No2です。 ちょっと補足しときますね。 先ほどのはシートを別にした場合のやり方なので、同じシートでやる場合は、 気を付けてください。 もう少し具体的に書くと C20に=SUMIF($A$2:$A$15,$A20,C$2:C$15)と入力して C20からE34の範囲にコピペします。 F20に=SUMIF($F$2:$F$15,$A20,G$2:G$15)と入力して F20からH34の範囲にコピペします。 SUMIF関数の詳細は以下をURLあたりを参照してください。 http://kokoro.kir.jp/excel/sumif.html http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/sumif.htm それでは
- nayuta_lot
- ベストアンサー率64% (133/205)
こんにちは SUMIF関数を使用したらいかがでしょうか? SUMIF関数は、条件を指定して集計することができます。 店コードをキーにして売上を集計すれば簡単にできます。 書式 SUM(検索範囲,検索キー,集計範囲) 添付画像はよく見えませんが、A列に店コードがあるデータでI列に売上があり、 集計先に店コードがA列にあって、B列に集計したい場合 集計先のB列に =SUMIF(元データのA列,集計先のA2,元データのI列) のようにすると集計できます。 =SUMIF(売上データ!A:A,A2,売上データ!I:I) こんな感じですかね。 売上データと集計先(売上表)みたいにシート分けたほうが使いやすいです。 検索値と一致した行のI列をすべて集計してくれます。 あとは下方にコピペすれば終わりです。 なにかあれば補足してください。 それでは
- 佐藤 志緒(@g4330)
- ベストアンサー率18% (840/4653)
ピボットテーブルを使ってみてください たぶん、5分もあれば集計できます