- ベストアンサー
Excelで符号を付ける式
初めて質問します。。。 今、Excelで備品の在庫数管理表を作っています。 A列:備品の名称 B列:在庫数〔計算式〕 C列以降:使用した日付と数を記入(出or入も記入) そこで、 (1)使用者が記入するときに数値に符号を付けなくても、「出or入」の条件によって「-or+」が勝手に付けられるようにしたいのですが、この場合はどのようにすればよいでしょうか? (2)年に一度棚卸のようなものを行い在庫数を微調整して行きたいのですが、この場合どのような式を立てればよいでしょうか? (今考えている式ですと、棚卸のたびに式の数値(セル番号)を変更しなければなりません。できたらそれを自動化したいのです。) Excel関数に免疫がないため本を読んでもよくわかりませんでした。 初歩的な質問かもしれませんが、どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。補足お手数かけました。大体イメージがわかるようになりました。 (1)C列は、ある時点(日)でのスタート在庫数と考えていいですね。 (2)2行目の「 出or入」は「出」と言う漢字か「入」と言う漢字か(または1か2とかのコードなど)1文字だけ入るのですね。 (3)これでは途中9月15日に使用15個、補充50個 行われた時は 9/15 9/15 出 入 15 30 と書き、9/15に他の備品に補充40個があれば、同列の別行に補充数40を書くで、良いですか。 そしてこの列の30や40に-を付けたい、で良いですか。 しかし、関数では難しそうですね。 毎列の第2行をIF文で聞くわけにもいかないでしょう。 D2セルなどの値「出」を判別して、自分自身の値に、-1を掛けて、自分自身のセルに入れることは循環参照になります。 VBAで当シートのChangeイベントプログラムに Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False c = Target.Column If Cells(2, c) = "入" Then Target = -Target End If Application.EnableEvents = True End Sub '----- Sub test02() Application.EnableEvents = True End Sub を入れると第2行が「入」であれば、20といれて-20にします。しかしこのプログラムには欠点も多く、力不足で改善も出来てない。 やはり、補充した人が、符号を変えて入力するほかないのでは。 識者の答えを待ちましょう。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
もう少し実例を記していただければ、良く判ると思います。 A列 B列 C列 備品名A 在庫数 日付 出または入 使用数 使用数 (質問) ・このシートは備品1個につき1シートか ・在庫数はどう計算するのか。 使用数だけ減らすとしても前日在庫数が必要では? 日付がここに来ると言うことは、日が変ると別シートに 記録するのか。使用数の終りの次ぎの行に新たな日付が 入るのか ・出入りとは 使用数は出としても、購入による補充増加は? 普通、出と入の列は分けるのでは? ・補足の「以下備品の種類分続く」とはどういうことでし ょう。同一シートのA列にまた別の備品名が現れると言う ことですか。では1備品1定数何行か用意すると使用数 がせまってきたきどうするのでしょう。 これらの表シート構成が伝わらないと、質問が何を必要としているか伝わらないと思いますが。 私の思い違いでしょうか?
補足
何度も申し訳ありません。 同シート上に以下のことが書いてあります。 A列 B列 C列 D列 E列 F列 … 1 在庫数 日付 日付 日付 日付 2 出or入 出or入 出or入 出or入 3 備品名a __ 使用数 使用数 使用数 使用数 4 備品名b __ 使用数 使用数 使用数 使用数 5 備品名c __ 使用数 使用数 使用数 使用数 ・出入:備品がある場所に保管してあり、そこから出して使用した場合「出」、購入して補充した場合「入」。 〇〇日に備品aを△個使ったから在庫は◇個(出)、 ●●日に備品cを▼個補充したから在庫は■個(入) のように、保管場所に確認しにいかなくても今どれだけあるかを把握できるようにしたいのです。 ・在庫数:C列には今現在ある数を入れてあり、それを基準にB列下線部には計算式を入れています。「=C3-SUM(D3:F3)」 しかしこの式だと補充した場合に不具合が生じてしまいます。 >では1備品1定数何行か用意すると使用数 がせまってきたきどうするのでしょう。 ⇒すみません。この意味がよくわからないのですが… 説明が下手ですみませんでした。 以上でご理解いただけますでしょうか?? お手数お掛けしますがもう一度よろしくお願いします。。。
- KYOSEN
- ベストアンサー率22% (68/300)
1)B列の計算式をIF分で分岐してみたら如何でしょうか? C列に、「入・出」を入力するのであれば D列に出入りの数量が入ってくるとして IF(C2=”入”,B1+D2,B1-D2) とか・・・。 2)C列に「棚卸」とかの入力をしてみては如何でしょうか? 現物>帳簿ならD列にマイナスで調整分を < ならD列にプラスで調整分を入力です。 この分は棚卸調整だということがわかります。
補足
お早い回答どうもありがとうございます。 ですがちょっと言葉が足りなかったようで… (1)ですが、C列について詳しく言いますと、 1行:日付 2行:出or入 3行:使用した数 4行:使用した数 5行:使用した数 …(以下備品の種類分続く) となっています。 今日使って残りいくつ、次の日使って残りいくつ、その次の日は増えたから残りいくつ、としたいわけです。 KYOSENさんの御意見を試してみましたが、一日分の累計しか出せませんでした。。。 (2)の調整分を記入するというのは気づきませんでした!参考にさせて頂きます。
お礼
お礼が遅くなってしまい申し訳ありません。 御提案下さったプログラムを早速実施してみようと思いましたが、VBAがインストールされていませんでした。 VBAという言葉は初めて聞きましたが、今度時間のある時に試してみたいと思います。 (今は他の仕事がちょっと忙しくなってきてしまいましたので…) Excelは奥が深いんですね。勉強になります。 今回は#1さん、#2さんのご意見を参考にさせていただいて試行錯誤した結果、 同日で入と出の記入欄を分け、出の右側に列を増やし、そこに出の値に-1をかける計算式を入れ、 それをスタートの在庫数に足すことにしました(また伝わり難そうな説明で申し訳ありませんが…)。 意外と問題なくいきそうですので、もしかして難しく考える必要はなかったのかもしれません。(^^; みなさんどうもありがとうございました。 この場をお借りしてお礼をさせて頂きます。 また何かありましたらよろしくお願いします。