- ベストアンサー
種類ごとに在庫をカウントする設定
エクセルで在庫管理表を作っているのですが、やはり分からない部分がある為、ご質問させて頂きます。 <在庫数の表> A1のセルに、商品αの在庫数10 B1のセルに、商品βの在庫数10 C1のセルに、商品Γの在庫数10 <やりたい設定> セルD1のセルで、商品の種類を選択し(リスト化する関数は知っています) 次にE1に使用する商品の数を入力すると、その該当商品の在庫数がマイナスされる。 例えば、D1で商品αを選択し、E1に5と入力したら、A1の在庫数が5差し引かれる という具合です。 どなたかご教授いただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
初心者さんがしばしば「できないかな~」と思いつくけど、そうは問屋がおろさないご相談の一種です。 1.エクセルの正しい使い方 A1セルにアルファの棚卸(初期在庫数)を記入 B1にベータ、C1にガンマのそれぞれ初期値を記入 D列に、上から順に出庫するたびに種類を記入 E列に、上から順に出庫するたびに個数を記入 上から順にとは、もちろん2行目、3行目、4行目…と一行ずつ記録していくという意味です。 A2にアルファの現在庫数として =A1-SUMIF(D:D,"α",E:E) B2にベータの現在庫数として =B1-SUMIF(D:D,"β",E:E) C2にガンマの現在庫数として =C1-SUMIF(D:D,"γ",E:E) のように、それぞれ計算させます。 2.アナタの思い付きをその通り実現する方法 A1、B1、C1にそれぞれ現在庫数を記入しておく シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) if target.address <> "$E$1" then exit sub select case range("D1") case "α" range("A1") = range("A1") - range("E1") case "β" range("B1") = range("B1") - range("E1") case "γ" range("C1") = range("C1") - range("E1") end select end sub ファイルメニューから終了してエクセルに戻る D1を選択し、E1に数字を記入する。 言わずもがなですがこの方法では、どこかで種類や数字を打ち間違えてももうその記録はどこにも残っていないので、後から見直してもどこをどう間違えたのかチェックする事は全く出来ません。 絶対に記入ミスをしないように、よく注意して利用してください。
その他の回答 (1)
- aokii
- ベストアンサー率23% (5210/22062)
商品の種類がどこに記載されているのか解りませんので、仮に、 A2のセルに、αと記載されているとし、 B2のセルに、βと記載されているとし、 C2のセルに、Γと記載されているとして、 E2セルに以下の式を入れてみて下さい。 =SUMIF(A2:C2,D1,A1:C1)-E1
補足
すみません。私、頭が悪いもので、上手く説明できていませんでした(汗 >商品の種類がどこに記載されているのか解りませんので 商品名は記入せず、画像を貼って表示する予定です。 同じシートに、表が二つ作ってあります。 片方は「在庫数の表」で、もう片方は「出荷数の表」です。 「在庫数の表」には、α、β、Γの商品の画像が貼ってあり、その各画像が貼ってある横のセルA1~C1に各在庫数があらかじめ入力してあります。 で、 「出荷数の表」の方には、D1に、入力規則の元値の欄に直接手打ちして作った“商品リスト”が作成済みであり、 その隣に、出荷数を入力するE1のセルがあるという作りです。 「出荷数の表」で商品を選択(D1)し、その出荷数(E1)を入力すると、 「在庫数の表」の該当の商品の在庫数(A1~C1)が減るように設定したいのです。
お礼
有難うございます! ご助言を参考に、もう一度、一から表を作り直してみます!