- ベストアンサー
エクセルでできますか?
- 配送の仕分け作業でエクセルを利用したいですが、実現可能でしょうか?
- 配送先店舗や商品の情報をエクセルで管理したいですが、どのような方法がありますか?
- エクセルのプロの助けが欲しいです。配送作業のための便利な機能を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ご利用のエクセルのバージョンが不明ですが, 例えば2003まで: http://www.microsoft.com/japan/office/previous/2003/experience/workstyle/tips/excel/tips12.mspx 2007以降: http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-piv.html のようにします。 いずれの資料も縦に店舗,横に商品で集計する事例で紹介されていますが,もしご質問に書かれているように商品は無視して店舗だけ集計すれば良いと考えているというお話なら。 手順:添付図参照 元データ4列を列ごと選択してピボットテーブルレポートの作成を開始します。 とりあえず資料を参考に作成すると,添付図右上に近い仕上がりになります。 ただし「データの個数/箱数」「データの個数/BT」のように表示されるので,右クリックしてフィールドの設定から集計の方法を「合計」に直します。 また右上の状態から「データ▼」というのを右隣の集計と書かれたセルの上にドラッグすると,添付図右下のような体裁のマトメ表を作成できます。 一連の配置が完了したら,あとは元データを更新する都度ピボットテーブルレポートツールバーの「更新!」ボタンをクリックすると,レポートも更新されます。
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
関数を使う方法です。 シート1の1行目は項目名でそれぞれのデータは2行目から下方にあるとします。 作業列をE列に作ってE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(E$1:E1)+1,INDEX(E$1:E1,MATCH(A2,A:A,0)))) シート2にお求めの表を表示させることにしてシート2のA1セルには店舗名、B1セルには箱数、C1セルには端数と入力します。 A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!$E:$E),"",IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,MATCH(ROW(A1),Sheet1!$E:$E,0)),IF(COLUMN(A1)=2,SUMIF(Sheet1!$E:$E,ROW(A1),Sheet1!$C:$C),IF(COLUMN(A1)=3,SUMIF(Sheet1!$E:$E,ROW(A1),Sheet1!$D:$D),"")))) これで店舗名も箱数や端数も自動的にシート2に表示されます。
- iapetus
- ベストアンサー率60% (248/413)
すいません、プロじゃないのにしゃしゃり出てます。 失礼ながら、ご質問の内容からだけだと、状況がうまく飲み込めないのですが。 これは納入管理をなさりたいのであって、在庫管理ではないですよね?。 日々、たくさんある店舗に対し、何種類もあって端数もある商品が配送され、その現状を1日締めで管理したい、ということなのでよろしいんでしょうか?。 その点、もう少し詳しく説明して頂いた方がいいと思います。 #1さんの仰るとおり、Excelで項目別集計をするなら、ピボットテーブルが現実的だと思います。 ピボットデーブルは、要するに、バラバラに入力された表形式の元データを、項目毎に合計等々に集計してくれる機能です。 が、未経験の方にはピボットは少々敷居が高いかもしれませんけど、Excelを使うに当たって、ピボット使わない手はないという汎用性の高い機能です。 ピボットを使わないとしたら、関数でもできるでしょう。 ピボット方式の場合は、必要なったら都度集計(再集計)する方法で、関数方式は、ちゃんと作ればリアルタイム集計になります(元データ巨大になると急に処理が遅くなる場合はありますけど。) ですが、どの道、集計ができるようになるのは、ある程度の基礎知識が必要になります。 ピボット方式でも、関数方式でも、別シートか別エリアに、主データとしてどばーーっと、1行当り 1店舗&1商品&箱数&ボトル数 のデータをまとめて表形式で入力して(順番は関係なしでOK)、どちらかの方法で、質問内容の表形式に集計します。 もし、関数方式を使うとして、合計だけでよいのなら、SUMIF関数、DSUMIF関数等で出来るんじゃないでしょうか。 同関数についての説明は、ネットにいっぱい転がっていますので、そちらを見てください。 その1例は、参考URをどうぞ。 あと、主データで店舗名や商品名をいちいち打ち込まなくてよいように、データの入力規則のリスト、という機能を使うと、ちょっとしたソフトっぽくなって使い易くなりますが、その説明だけで結構長くなっちゃいますので、必要であればレスして下さい。 こういう実務に直結した例は、Excelの勉強になるすごくいい機会ですから、頑張って下さい。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 他の方々からの回答通り、ピボットテーブルが一番簡単だと思います。 他の方法としてVBAでの一例です。 Sheet1にデータがありSheet2に表示するようにしてみました。 各店の商品ごとの集計が必要になると思います。 画面左下にあるSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面がでますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim vl1, vl2 As Variant Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は実際のSheet名に! Set ws2 = Worksheets("sheet2") j = ws2.Cells(Rows.Count, 1).End(xlUp).Row If j > 1 Then ws2.Rows(2 & ":" & j).Delete End If ws1.Columns(1).Insert For i = 2 To ws1.Cells(Rows.Count, 2).End(xlUp).Row ws1.Cells(i, 1) = ws1.Cells(i, 2) & ws1.Cells(i, 3) Next i For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(Range(ws1.Cells(2, 1), ws1.Cells(i, 1)), ws1.Cells(i, 1)) = 1 Then With ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = ws1.Cells(i, 2) .Offset(, 1) = ws1.Cells(i, 3) End With End If Next i For j = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, 1) = ws2.Cells(j, 1) & ws2.Cells(j, 2) Then vl1 = vl1 + ws1.Cells(i, 4) vl2 = vl2 + ws1.Cells(i, 5) End If Next i With ws2.Cells(j, 3) .Value = vl1 .Offset(, 1) = vl2 End With vl1 = 0 vl2 = 0 Next j ws1.Columns(1).Delete End Sub 'この行まで こんな感じではどうでしょうか?m(__)m
- umekihajime
- ベストアンサー率23% (13/55)
ピボットテーブルを利用すれば簡単にできますよ。