これからの季節に親子でハイキング! >>

薬品の在庫を管理できるExcel表を作りたいです。
コードと薬品名、単価を別シートから参照して(VLOOKUP関数を使って)作成することができましたが、参照した商品名に紐づく前月繰越高を、前月の在庫残高からひっぱってくることは可能でしょうか?

「Excelで在庫管理の表を作りたい」の質問画像

A 回答 (4件)

「残高」ではなく「在庫数」のような気がするのは自分だけかな。



・・・本題・・・

前月分のデータ範囲を指定して参照させればいいだけ。

しかし、自分ならVLOOKUP関数が参照している「コード」と「商品名」と「単価」が記入されているシートに直接「在庫数」を表示するようにするなあ。
そしてそこから「在庫数」を参照して表示するように作る。
そうすれば、「前月」扱いが無いものがあっても、「今月」扱いが無いものがあっても「在庫数」は常に正しく表示できますからね。
1年分の表をあらかじめ作っておけば、表の追加で元のシートに表示させる「在庫数」を計算させる数式を作り直すこともありません。


・・・余談・・・
次の質問は
「単価が変わったときに、単価が変わる前の月の金額はそのままで、変わった月からは新しい単価で計算させるにはどうしたらいいですか」
でしょうか。
    • good
    • 0
この回答へのお礼

大変、早起きですね!ご回答ありがとうございます。
参照元に、在庫数を入力するのは、自分も考えました。
参照元の在庫数を手入力ではなく
数式をいれて変えていくことはできるのでしょうか。

お礼日時:2018/06/15 08:01

No.2です。



Vlookupでは、参照値(例えばコード)に重なりが無ければ、
表の大きさが変化しても、利用可能です。
但し、既存表の最下段に追加すると、追加分が参照範囲から漏れる場合があるので、
最下段にダミー行を設けて、そのダミー行の上に新規データー行を追加すれば、
参照範囲も自動で拡大されます。
御趣旨に有っていれば幸いです。
    • good
    • 0
この回答へのお礼

補足ありがとうございます!
参照元は名前をつけて、後から追加したい時は
最下行ではなく間の行に挿入すればいいですね。

お礼日時:2018/06/16 12:54

コードと商品名が対応しているならば、


同様にVlookupでコードに対する前月繰越を持っいぇくればよいはずです。

そもそも提示された表には前月繰越が入っているので、
それ以外にどのようにしたいのですか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
複数の店舗があり、店舗ごとに簡単な在庫管理をしています。これを本店で店舗ごとに把握したいという趣旨で作成しています。店舗ごとに商品名が異なりますし、コード番号も異なってきます。
商品名が上記の表記載以上に複数あり、これを増やしたり、並べ替えたりしたとして
VLOOKUPでも前月在庫数を参照することができるのか?ということが知りたいです。

お礼日時:2018/06/15 07:58

前月の繰越残高をどう管理しているか、ですね。


引っ張って来る事は可能です。
というか、引っ張って来れるよう組みましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。VLOOKUPで同じように参照してみます。

お礼日時:2018/06/15 07:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcel VBA 在庫管理表 式の入力を繰り返す

Excel VBA 在庫管理表 式の入力を繰り返す

簡単な式を繰り返し入力し、自動で最終行まで有効在庫数を求めるマクロを作りたいのですが、なかなか出来ず困っています。
VBAの知識をお持ちの方,お力をかして頂けないでしょうか?よろしくお願いします。

・製品の受注数と在庫数、有効在庫数の管理表があります。
・各製品名毎に受注日と受注数がまとめられていて、それぞれ1行又は複数行になります。
・各製品名と製品名の間に空白セルが入ります。(←繰り返す際、区切りとして利用出来ないか?)
・A列には各製品名と製品名の間に「品名」が入ります。(←繰り返す際、これも利用出来ないか?)
・ここでF列の有効在庫欄にマクロで自動的に次の簡単な式を入れて、有効在庫を計算で導き出したいのですが・・・。

有効在庫セルに…(添付図参照下さい)
 (1) 1行目 =現在庫-受注数
 (2) 2行目 =1つ上の有効在庫-受注数(例:=F4-D5)
 (3) 3行目以降 2行目の式を繰り返す

以上の式を最後の行(数千行)まで繰り返す命令を作りたいのですが・・・問題は製品名によって行数が違うことと、各製品名毎の間に空白行(セル)(←上手く区切りで使えるのかも…)が入るのですが、どの様に考えればいいでしょうか?

繰返しの構文は…
  Do While
  Loop
などを使えば良いと思うのですが、中身の命令文をどうしたら良いか分かりません。

例えば・・・
・A3から下に見ていって「品名」という言葉が出てくるまで行数をカウント。
・行数が1行の場合(1)の式、2行の場合(2)の式、3行以上・・・の場合で場合分け(Case文)

などとすれば良いのかなと思いますが、VBA初心者のため、どの様に命令文を書いたらいいか分らず困っています。

私は関数は多少扱えますが、VBAについては初心者の状態から今勉強中といったところです。
是非皆様のお力を貸して下さい!よろしくお願い致します。

※因みに現状は、1行の場合、2行の場合、3行以上の場合とそれぞれマクロ(の記録)を作って半手作業で対応していますので非常に手間が掛かっています。

Option Explicit
Sub Macro1セル3()
' Macro1 Macro
' Keyboard Shortcut: Ctrl+c
'
ActiveCell.Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-4]"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=R[-1]C-RC[-4]"
ActiveCell.Select
Selection.Copy
ActiveCell.Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub

Sub Macro2セル1()
' Macro2 Macro
' Keyboard Shortcut: Ctrl+z
'
ActiveCell.Offset(0, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-4]"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Sub Macroセル2()
' Macro3 Macro
' Keyboard Shortcut: Ctrl+x
'
ActiveCell.Select
ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-4]"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=R[-1]C-RC[-4]"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Excel VBA 在庫管理表 式の入力を繰り返す

簡単な式を繰り返し入力し、自動で最終行まで有効在庫数を求めるマクロを作りたいのですが、なかなか出来ず困っています。
VBAの知識をお持ちの方,お力をかして頂けないでしょうか?よろしくお願いします。

・製品の受注数と在庫数、有効在庫数の管理表があります。
・各製品名毎に受注日と受注数がまとめられていて、それぞれ1行又は複数行になります。
・各製品名と製品名の間に空白セルが入ります。(←繰り返す際、区切りとして利用出来ないか?)
・A列に...続きを読む

Aベストアンサー

以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub 有効在庫設定()
Dim ws As Worksheet
Dim maxrow, row As Long
Dim newname, oldname As String
Set ws = Worksheets("在庫管理表")
maxrow = ws.Cells(Rows.Count, "B").End(xlUp).row 'sheet B列の最大行取得
oldname = ""
For row = 2 To maxrow
newname = ws.Cells(row, "B")
If newname <> "" Then
If newname = oldname Then
'有効在庫=前行有効在庫-受注数量(製品名の2行目以降)
ws.Cells(row, "F").Value = ws.Cells(row - 1, "F").Value - ws.Cells(row, "D").Value
Else
'有効在庫=現在庫-受注数量(製品名の1行目)
ws.Cells(row, "F").Value = ws.Cells(row, "E").Value - ws.Cells(row, "D").Value
End If
oldname = newname
End If
Next
MsgBox ("処理完了")
End Sub

以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub 有効在庫設定()
Dim ws As Worksheet
Dim maxrow, row As Long
Dim newname, oldname As String
Set ws = Worksheets("在庫管理表")
maxrow = ws.Cells(Rows.Count, "B").End(xlUp).row 'sheet B列の最大行取得
oldname = ""
For row = 2 To maxrow
newname = ws.Cells(row, "B")
If newname <> "" Then
If newname = oldname Then
'有効在庫=前行有効...続きを読む

Qエクセルの計算式で、在庫管理をしたい

教えて下さい。エクセルで商品管理の作表をしています。在庫数から、注文数を引いていくには、どんな計算式を使うのでしょうか?どうしても、入庫の無い日の
在庫数にマイナスが入ってしまいます。(トータルにマイナスが入るのは分かりますが)ドコにどーゆー関数を使うのか教えて下さい、お願いします。

Aベストアンサー

すみません、#2補足です。
うちの場合、入庫は月に数回なので、入庫数は一列しか設けてなく、そこに入庫があった日にどんどん足して入力するのですが、出荷は毎日なので、1日~31日までを区切っておいて毎日入力して行き、当月の出荷合計列にその合計が出るようにしてます(SUM1日セル:31日セル)←を当月出荷合計セルに入れるわけです。
なので、前月末在庫セルをAとし、入庫数セルをBとし、当月出荷合計セルをCとすると、「A+B-C」で、これが現在庫数になりますよね。

QVBAでの在庫管理

エクセルVBAで在庫管理をしたいと思っていますが、難しく前へ進まず悩んでいます。
すいませんが、ご教授ください。
一つのシートに下表のような表があります。
これをロットをキーとして一行にまとめ、在庫数まで求めたいです。
いい方法はありませんか?

製品  ロット  入庫  出庫  在庫
A   1111  1000      
A   1112  1000      
A   1112       500
A   1111       500
A   1111  1000

Aベストアンサー

マクロ(VBA)例です。
仮にデータをSheet1、集計表をSheet2に作成しています。
Sheet1シートタブ上で右クリック→コードの表示→サンプルコード貼り付け→Sheet1上でAlt+F8キー押下→sample実行

概略は、製品&ロットをキーにデータ(製品~出庫)を集計DBに入出庫数を計数して登録、集計表を出力しています。

Sub sample()
Dim DB, wk(3), wk1, rslt, wkey As String, i As Long, j As Long, k As Long
Set DB = CreateObject("Scripting.Dictionary")
'** データ配列作成
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For j = 0 To 3
If Cells(i, j + 1) <> "" Then
wk(j) = Cells(i, j + 1)
Else
wk(j) = 0
End If
Next
wkey = wk(0) & "," & wk(1)
If Not DB.Exists(wkey) Then
'** 新規データ登録
DB.Add wkey, Join(wk, ",")
Else
'** 登録済み入出庫計数
wk1 = Split(DB(wkey), ",")
wk1(2) = wk1(2) + wk(2)
wk1(3) = wk1(3) + wk(3)
DB(wkey) = Join(wk1, ",")
End If
Next
'** 集計表出力
With Sheets("sheet2")
.Cells.Clear
.Cells(1, "A").Resize(1, 5).Value = Cells(1, "A").Resize(1, 5).Value
wk1 = DB.keys
k = 1
For i = LBound(wk1) To UBound(wk1)
rslt = Split(DB(wk1(i)), ",")
k = k + 1
For j = 1 To 4
If rslt(j - 1) <> "0" Then
.Cells(k, j) = rslt(j - 1)
End If
Next
.Cells(k, "E") = .Cells(k, "c") - .Cells(k, "D")
Next
End With
End Sub

マクロ(VBA)例です。
仮にデータをSheet1、集計表をSheet2に作成しています。
Sheet1シートタブ上で右クリック→コードの表示→サンプルコード貼り付け→Sheet1上でAlt+F8キー押下→sample実行

概略は、製品&ロットをキーにデータ(製品~出庫)を集計DBに入出庫数を計数して登録、集計表を出力しています。

Sub sample()
Dim DB, wk(3), wk1, rslt, wkey As String, i As Long, j As Long, k As Long
Set DB = CreateObject("Scripting.Dictionary")
'** データ配列作成
For i = 2 To Cells(Rows.Count, "A"...続きを読む

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで在庫管理表の作り方を教えてください。

    A     B     C
1列.入庫数 出庫数 総枚数
2列. 10    5    100


「(入庫数-出庫数)+総枚数」で出た枚数をC2に上書きさせたいのですが、出来ません。
「(A2-B2)+C2」じゃ出来ないのでしょうか?

例えば「C2が90の時は総枚数が95になる」という風な在庫管理表を作りたいのです。

本当に初心者ですみませんが、回答お待ちしております。よろしくお願いします。

Aベストアンサー

>上書きさせたいのですが
関数では、原理的に絶対できません。
C2に入れる式の右辺は、C2を含んではなりません。循環参照のエラーが出るでしょうに。
ぐるぐる回りの計算になり値として、収集がつかなくなるからです。
使い始めたらすぐ経験するでしょう。
マクロ・VBAを使えばできないこともないですが、こんあんところで使うのは適してないと思う。
「総枚数」とは何ですか。通常前日在庫などの数が来るのではないですか。
在庫管理の仕事に経験ありますか。

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 井上 派遣 企画 29  未調整

◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出
 A      B     C     D    F
1 氏名 役職 部署 年齢 移動時期 
2 高橋 役員 人事 50  未調整


補足
・元データ(シート1)はこれからもデータを追加するので
 その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。

・マクロ、VBAは知識がないので
 関数で作成したいです。

・できるだけエラー(#N/Aなど)表示されないようにしたいです。

説明が不十分で伝わりにくいかと思いますが
よろしくお願いします。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 ...続きを読む

Aベストアンサー

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるため)
.Range("A1:E1").AutoFilter 'A1:E1にオートフィルタ設定
.Range("A1:E1").AutoFilter Field:=3, Criteria1:="=人事", Operator:=xlOr, Criteria2:="=企画" '左から3つ目のフィルタを"人事"と"企画"のOR条件で抽出
.Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" '左から5つ目のフィルタを"未調整"で抽出
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") 'A1から最終セル範囲の可視セルをこのシートのA1以降に貼り付け
.AutoFilterMode = False 'オートフィルタ終了
End With 'Sheet1に対する記述おわり
End Sub

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるた...続きを読む


人気Q&Aランキング

価格.com 格安SIM 料金比較