エクセルで在庫情報と発送みたいなものを作りたい

このQ&Aのポイント
  • エクセルを使用して在庫情報と発送処理を一括管理する方法について教えてください。
  • 在庫情報と発送処理をエクセルで管理する際に、商品のまとめシートを作り、関数を使用して商品を取り出すことができます。
  • また、発送ボタンを作成し、押すと在庫が減り、商品情報がまとめシートに記録される仕組みを作ることもできます。
回答を見る
  • ベストアンサー

エクセルで在庫情報と発送みたいなものを作りたい。

エクセルで在庫情報と発送みたいなものを作りたいのですが、 まずは、これができるのか?どうか?知りたいのですが (なんとなくできそうですが) さらには、どうやったらいいのか? エクセルエキスパートなデキる方、教えて頂けないでしょうか? 大きく2つあります。 例のようにプレゼントの発送と在庫をエクセルで表示したいのです。 この画像を参考にしてください。 http://bsmile.sakura.ne.jp/phptest/aa1.jpg ===その1 イメージは在庫管理=== 添付画像のようなエクセルは関数でつくれますか? シート「商品A~商品C」に任意に商品が入ってたとします。 (それぞれのシートはA,B,C列の3項目とします。) (尚、左上の在庫情報はcounta関数をつかってるだけです。) それを「まとめ」のシートの B列に「商品?」を入力した場合 それにそって、ワークシート「商品A,B,C」から、商品を取り出して、 右に列記する事は可能でしょうか? (サンプル左上の太枠で囲った、薄紫の部分) なお、例の通り、B列には任意でワークシートの名前を入力するものとし 同じ「商品B」があれば、商品Bシートの2番目のファイルが並ぶものとします。 まずここまでをどう作ったらいいか?ほぼわかりません。 ===その2 イメージは発送処理とその後の在庫管理=== その後マクロでも関数でもいいのですが、 「発送しました」ボタンか何かを付けて、 それを押すと 商品Aは1行目が 商品Bは3行目まで 商品Cは2行目まで 自動的に削除されてそれぞれが1行目に移動(在庫が減るというイメージ)し、 その1でのルールで内容が記載される (つまり、商品Aは1つ、商品Bは3つ、商品Cは2つ内容が減る) ======== こういったエクセルを作りたいのですが、 そもそも、左上のB列の名前に入ったワークシートを どうやって、宣言すればいいか?すらわかってません。 それはこの関数だ!とか、参考になるWEBアドレス等あったらおしえていただけませんでしょうか? この画像を参考にしてください。 http://bsmile.sakura.ne.jp/phptest/aa1.jpg どうぞよろしくお願いいたします。m(_ _)m

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

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

No.2です! どうもごめんなさい。 確かにおっしゃる通り消えなくてはいけないデータが消えないようですね! おそらく、一気にDeleteしてしまったのがいけないようですので ↓のコードに変更してみてください。 尚、一気に行削除するのではなく一度データを消去し、 最後にSheet見出し左から2番目~4番目のSheetの空白行を削除するようにしていますので 実際はもっとSheet数があるかもしれませんので、実データに合わせてみてください。 Private Sub CommandButton1_Click() Dim i As Long, k As Long, str As String, c As Range On Error Resume Next For i = 5 To Cells(Rows.Count, 1).End(xlUp).Row str = Cells(i, 2) With Worksheets(str) Set c = .Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole) c.Resize(1, 3).ClearContents End With Next i For k = 2 To 4 '←Sheet見出し左から2番目~4番目(商品A~商品C)のSheet Worksheets(k).Range("A:C").SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp Next k i = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(5, "A"), Cells(i, "B")).ClearContents End Sub 今度はお望み通りになれば良いのですが・・・m(_ _)m

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

まとめのシートのC5セルには次の式を入力してE5セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(OR(COLUMN(A1)>3,$B5=""),"",INDEX(INDIRECT($B5&"!A:C"),COUNTIF($B$5:$B5,$B5),COLUMN(A1))) その2についてはマクロを使うことになります。 まとめのシートにコマンドボタンを配置し、そのコマンドボタンを右クリックして「コードの表示」を選択します。 表示される画面では次のコードを入力します。 Private Sub CommandButton1_Click() Dim m, n, s As Integer Set WS1 = Worksheets("まとめ") Set WS2 = Worksheets("商品A") Set WS3 = Worksheets("商品B") Set WS4 = Worksheets("商品C") m = WorksheetFunction.CountIf(WS1.Range("B5:B50"), "商品A") n = WorksheetFunction.CountIf(WS1.Range("B5:B50"), "商品B") s = WorksheetFunction.CountIf(WS1.Range("B5:B50"), "商品C") WS2.Range(WS2.Cells(1, 1), WS2.Cells(m, 3)).Delete Shift:=xlShiftUp WS3.Range(WS3.Cells(1, 1), WS3.Cells(n, 3)).Delete Shift:=xlShiftUp WS4.Range(WS4.Cells(1, 1), WS4.Cells(s, 3)).Delete Shift:=xlShiftUp WS1.Range("C5").Select End Sub

deepimpact
質問者

お礼

ありがとうございます! こちらもすごいですね。 感謝です!

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

こんばんは! 一例です。 まず「まとめ」SheetのA・B列は手入力(B列はリストでもOK)とします。 データは5行目以降に入力するとして、 C5セルに =IF($B5="","",INDEX(INDIRECT($B5&"!"&ADDRESS(1,COLUMN(A1),4)&":"&ADDRESS(100,COLUMN(A1),4)),COUNTIF($B$5:$B5,$B5))) という数式を入れオートフィルで列・行方向にコピーしてみてください。 これでB列に商品が入力されれば別Sheetのデータが1行目から表示されると思います。 次に2番目の質問に関してですが、 「まとめ」Sheetにコマンドボタンを配置 → コマンドボタン上でダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてみてください。 Private Sub CommandButton1_Click() Dim i As Long, k As Long, str As String, c As Range For i = 5 To Cells(Rows.Count, 1).End(xlUp).Row str = Cells(i, 2) With Worksheets(str) Set c = .Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole) k = c.Row .Rows(k).Delete shift:=xlUp End With Next i i = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(5, "A"), Cells(i, "B")).ClearContents End Sub ※ 「まとめ」SheetのA・B列のデータも消去するようにしています。 一旦コマンドボタンをクリックすると元に戻せませんので 今あるデータは一旦保存して試してみてください。 ※ 無理にコマンドボタンではなく、オートシェイプ(図形)を挿入 → 右クリック → マクロの登録 でも同様の感じで可能です。m(_ _)m

deepimpact
質問者

補足

すごい!すごすぎます!! こんな短時間でありがとうございます。 本当にありがとうございます! m(_ _)mm(_ _)mm(_ _)mm(_ _)mm(_ _)m さて、試してみました。 その1(まるで、問題なしです。すばらしい!) その2(ちょいと、問題あり?) こちらのマクロをしてみたんですが、 消されてる行がおかしく感じます。 何かちょっとしたことで、修正すれば、 いけそうな気がするのですが、どこをどうしたらいいでしょうか? 問題点はこちらにアップしてあります。 bsmile.sakura.ne.jp/phptest/bb1.jpg できればもう少しお付き合いいただけると嬉しいです! ただ、本当にどうもありがとうございました!

  • ztb00540
  • ベストアンサー率18% (119/647)
回答No.1

多分VBAでなければ無理でしょう。またはVBになります。

関連するQ&A

  • エクセル 在庫数を求める計算式

    エクセル2013を使用しています。 型番毎にシート管理していた在庫表を、 以下の内容で1シートにまためた形に変更したいと考えています。 型番毎の在庫数を求める計算式をお教え下さい。 A列:在庫管理する型番(34種類) B列:日付 C列:入荷 D列:出荷 E列:在庫 <例> 以下の場合3行目のE列(在庫:7)が1行目の同型番の、 E列(在庫:10)から算出される計算式。      A列   B列  C列  D列  E列 1行目 ABC型  11/20  0   5   10 2行目 DEF型  11/23  5   0   20 3行目 ABC型  11/24  0   3   7 ※A列に入る型番は注文次第なのでどの型番がいつくるかは未定となっています。 何卒よろしくお願い致します。

  • Excel 在庫管理をしたい

    Excelで簡単な在庫管理の表の作り方について質問します。 A,B,C列は入力後、E,F列にその時点での在庫量を表示させます。 商品が固定のものではなく、・・・H,I・・・X,Yと新たに出てきたときに E,F列に1個以上のものだけを表示させるにはどのような関数を入力 すればいいでしょうか? 説明が分かりにくいかもしれませんが、よろしくお願いします。     A     B     C     D     E     F 1  日付 商品名  数量      商品名 数量 2  10/1   A    10         A   *** 3  10/2   C    25         B    ** 4  10/5   D    15         C     * 5  10/8   B    20         ・    ・ 6  10/9   A    -5          ・    ・ 7    ・     ・     ・ 8    ・     ・     ・ 9    ・     ・     ・

  • エクセルのCOUNTIF関数について

    エクセルのCOUNTIF関数について、というかCOUNTIF関数でよいのかどうかもよく分からないのですが、教えて下さい。 (1)まず、ワークシートのA列の1~100行目までの100マスを範囲として、数値を入力していくときに、仮に同じ数値を入力しようとしても、入力ができないようにしたいのです。 (2)次に、ワークシートのA列とC列のそれぞれ1~100行目までの合計200マスを範囲として、(1)と同じことをしたいのです。(つまりB列はとばして) (1)と(2)のようなことは可能でしょうか? お分かりの方がおられましたら、ぜひよろしくお願いします!

  • エクセル 在庫表:異なるシートでマッチング

    エクセルの在庫表から、在庫総額を出したいのですが、 在庫数と価格とが別のシートになってしまっています。 マッチングをして、在庫金額を出したいのですが どのような方法があるのでしょうか。 価格 と言うシートのデータが以下の通りだとします。 A1:Tシャツ      B1:1500円 A2:タンクトップ    B2: 1000円 個数と言うシートのデータが以下の通りだとします。 A1:Tシャツ    B1:赤   C1:100個 A2:Tシャツ    B2:青   C2:200個 A3:タンクトップ  B3:白   C3:250個 個数と言うシートのD列に、価格シートの単価を それぞれにマッチングさせて入れたいと思います。 逆に、個数シートA列の情報が同じ商品の個数総計を 価格シートに入れ込む形でも良いのです。 同じ商品でも、カラーごとの在庫管理になっていますが、 最終的に知りたいのは在庫の総額なので、 商品や色ごとの在庫価格は不要です。 総額まで計算できればありがたいですが、とりあえず データがマッチングできさえすれば、表内の総額計算程度ならできます。 よろしくお願いいたします。

  • 商品在庫の集計の方法で困っています

    商品在庫の管理をエクセルでしようと思っているのですが、 下図のようにシート1のA列に”あ”から”お”の5種類の商品があり、B列に販売数が記入されていて、 A列  B列 商品  販売数 あ    1 い    1 う    2 え    1 お    2 う    1 あ    3 え    1 お    1 シート2のA列に商品の項目があり、B列に売れた商品の総数が出てくるようにするにはどうすればよいのでしょうか? シート2のB列のセルに、COUNTIF(A2:A10,"あ")という関数だけでは、売れた数だけシート1のA列に書き込まないと総数が出ないので、うまくできる方法があれば教えてください。 初心者ですので簡単な式しか分からず、苦戦しています。

  • Excelで在庫数チェックを行いたい

    まず現状ですが、Sheet1のA列に商品型番がa,b,c,d,eとあります。 B列に在庫数を入力します。 Sheet2にはA列に商品型番があるのですが、a,a-1,a-2(以下商品bも同じb-1,b-2)とあります。B列にそれぞれの数量があります。 そこで、在庫入力セルの数式なのですが、Sheet2のa,a-1,a-2の数量を抽出して合計し、その値を返すようにしたいと思っています。商品aはa,a-1,a-2の合計数を表示させるという形です。 分かりにくくて申し訳ないですが、御教授頂ければ幸いです。 宜しくお願い致します。

  • Excel  希望者へ在庫商品検索後、抽出について

    下記のように、Sheet1にAさんから希望順位が決まっている商品コードに基づき、Sheet2の商品及び在庫商品に基づき、購入者名を記入したいのですが、どうしたらいいのでしょうか。 エクセルから記入例をコピーしたら、ずれてしまい少し見づらいと思いますがご容赦ください。 sheet1 列/行  A B C D E 1 順位 氏名 第一希望 第二希望 第三希望 2 1 Aさん K05 F05 F02 3 2 Bさん F02 K05 F01 4 3 Cさん K05 F01 F02 5 4 Dさん F01 F02 J02 6 5 Eさん F02 J02 K05 sheet2 列/行 A B C D E 1 品番 商品名 個数 第一購入者 第二購入者 2 F01 第1商品 2 3 F02 第2商品 1 4 J02 第3商品 1 5 K05 第4商品 1 6 F05 第5商品 2

  • Excelの関数を教えてください。

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

  • エクセルでこんなことできますか?

    エクセルで次のようなことがしたいのですが、関数等を使ってやり方があったら教えてください。 例を挙げて説明します。まずsheet2のA列に商品のIDを1行目、2行目...と入れていきその隣のB列に商品の名前を1行目、2行目...と入れていきます。 そしてsheet1で、たとえばセルA1にIDを入力したとき、sheet2のIDと一致するものがあればそれの商品名を、入力したセルの右隣(セルB1)に自動的に返してくれる。 こんなことってできるでしょうか?教えてくださいお願いします。

  • エクセル、VBA、抽出複数検索について

    エクセル、VBA、VLOOKUP、MATCH関数等について出来る方法があれば教えてください。 インチごとに分けてあるシートがあり、(在庫表です) これを参照して、別ブックへVLOOKUP等を使って、サンプルデータのシート4のように表示させたいのですが、 何か方法を使って出来ることは可能でしょうか? 問題点が複数あります 1、VLOOKUPの範囲について、B列が結合されていて、C列は複数行あるため、商品名が入ってきません。 C列については、何千件とデータがあるため、結合することは不可能です。 一致している条件としては商品コードが必ずあり、商品名には「/」が入っております。 =CONCATENATEとVLOOKUPは一緒に使うことは可能ですか? もしくはINDEX関数やIF、SUMPRODUCT等を使うのでしょうか? シート4のような形に出来る方法があれば、教えてほしいです。 VBAは詳しくはないのですが、VBAで出来るのであれば、教えてほしいです。 在庫表はとても作り方が悪いのですが、これを作り直すと言うことは、不可能です。 グループ会社で使っているため、なんとかこの在庫表を使いたいです。 VBAでA列をA5からA100にコードのみ入れた場合、B列に商品名が入るようにVBAで作ることは可能でしょうか? もしくは、検索条件を2つ使って、一つは商品コード完全一致+あいまい検索で【/】で商品名を入れることは可能でしょうか? 関数は調べたのですが、関数では難しいのかなと思います。 宜しくお願い致します。

専門家に質問してみよう