在庫・販売管理用のファイルをExcelにて作成しています。

仕様
・仕入管理/在庫管理/販売管理の3シート
・商品データは在庫管理シートに記録
・商品にはそれぞれ商品番号をつけ管理

まだ運用前なのですが、以下のような運用方法を考えています。
それにあたって、自動化したい作業があるのですが、なかなかできず…。

VBAの知識をお持ちの方,お力をかして頂けないでしょうか?
もしくは関数で同じような動作が実行可能なら、そちらでも構いません。

<仕入れがあった場合>
(1)在庫管理シートに商品を登録(以前に取り扱ったことのある商品の場合は省略)
(2)仕入管理シートに商品の仕入数を記録(VLOOKUP関数で在庫管理シートから商品名等を呼び出します)
(3)在庫管理シートに(2)で入力した仕入数反映(在庫管理シートにプラス) ← ここを自動化したいです

<販売した場合>
(1)販売管理シートに販売した商品、価格、個数、販売相手などを記録(同じく在庫管理シートから商品詳細を呼び出します)
(2)在庫管理シートに(1)で入力した販売数を反映(在庫管理シートからマイナス) ← ここを自動化したいです

この自動化ができれば在庫管理シートがリアルタイムの在庫を表示するようになるので、とても便利なのですが、今現在の状態だと、この「自動化したい部分」を手作業にてやる予定です。
現在は商品の出入がとても少ないので、手作業でも問題ないのですが、今後商品が増えることを考えると実用的ではなく…。

できれば、「入力してすぐ反映」というシステムより、「入力後確認→確定→反映」というシステムにしたいのですが…。(ワガママで申し訳ないです)

私は関数はある程度扱えますが、VBAについては初心者の状態から今勉強中といったところです。

是非皆様のお力を貸して下さい!よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

(3)在庫管理シートに(2)で入力した仕入数反映(在庫管理シートにプラス) ← ここを自動化したいです


仮に
 仕入管理シート
 商品番号 商品名 仕入日  仕入数

 在庫管理シート
 商品番号 商品名 仕入総数  販売総数 在庫数

とあったとします。
仕入総数は =SUMIF(仕入管理!A:A,A2,仕入管理!D:D)
で得られますよね。
総販売数量も同様ですので
在庫数は =C2-D2 です。
この関数を在庫管理シートにたっぷりとコピーしておけば十分です。
    • good
    • 0
この回答へのお礼

hallo-2007様

早速のご回答ありがとうございます。
教えて頂いたやり方でデータを持ってくることができました!!!
VBAを使わなくても簡単にできるんですね★

関数は知ってるだけではなかなか応用できず、難しいです><。
本当にありがとうございました。

お礼日時:2011/04/24 20:11

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

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エクセルを使った、在庫管理と発注。

エクセルを使った、在庫管理と発注。


私は、エクセルが得意ではないのですが、今日、用事で退社する上司に「手が空いているので何かやっておくことがあったら言ってください」といったところ、思わぬ無茶振りをされてしまい、とても困っています。在庫管理などに関する知識がまったく無い人間なので、説明が長くなってしまうことと、わかりにくい点があるかもしれないですが、なるべくわかりやすく書こうと思うのでご協力お願いいたします。


現在当社の商品在庫は、エクセルで管理されております。
発注は目視で足りないと思ったら適性分だけ頼むかたちです。

今度上司のしたいことはエクセルの在庫データを使って「発注リスト」が自動的に作成されることです。

例えば、商品Aの適正在庫が5だとして、それを切ったら自動でリストの中に適正在庫になるような個数と商品名が載る。あとはそれをプリントアウト(パソコンからも送れるのでそれで自動発注できればなお良いです)してFAXで発注。というかたちです。

それは、エクセル上で全部済めばそれでも良いですが、そのやり方が複雑な場合、こんな方法、こんな簡単なソフトがあるよ、という意見がありましたらよろしくお願いしたいです!!

当社POSシステムはございません。導入もいたしませんのでどうかパソコンでの方法でご回答お願いいたします。

アクセスは、当社で使える者がいないため、なるべくエクセルを使う形にしたいみたいです。

何か説明が足りないようでしたらご指摘ください。

よろしくお願いいたします!

エクセルを使った、在庫管理と発注。


私は、エクセルが得意ではないのですが、今日、用事で退社する上司に「手が空いているので何かやっておくことがあったら言ってください」といったところ、思わぬ無茶振りをされてしまい、とても困っています。在庫管理などに関する知識がまったく無い人間なので、説明が長くなってしまうことと、わかりにくい点があるかもしれないですが、なるべくわかりやすく書こうと思うのでご協力お願いいたします。


現在当社の商品在庫は、エクセルで管理されております。
発注は目視...続きを読む

Aベストアンサー

No.1です!
何度もごめんなさい。
前回は単に適正在庫数に足らないものだけを表示するだけです。
ご希望としてはそのリストを印刷できる表にしたい!ということだと思いますので、
もう一度画像をアップしてみます。

商品補充リストをSheet2に表示するようにしてみました。
Sheet1は前回そのままで、

Sheet2のA2セルに
=IF(COUNT(Sheet1!$C$2:$C$1000)<ROW(A1),"",INDEX(Sheet1!A$2:A$1000,SMALL(IF(Sheet1!$C$2:$D$1000<>"",ROW($A$1:$A$999)),ROW(A1))))

これは配列数式になってしまいますので、データ量が多い場合はコンピュータにかなりの負担を与えます。
という訳で、Sheet1の1000行目まで対応できる数式にしていました。

Sheet2のA2セルにこの画面からコピー&ペーストしただけではエラーになると思います。
貼り付け後、F2キーを押す、または貼り付けセルをダブルクリック、または数式バー内で一度クリックします。
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

そして、B2セルに
=IF(A2="","",VLOOKUP(A2,Sheet1!A:C,3,0))
(これは配列数式ではありません)

最後にZ2・B2セルを範囲指定し、B2セルのフィルハンドルで下へコピーすると
画像のような感じになります。

以上、参考になればよいのですが・・・
何度も失礼しました。m(__)m

No.1です!
何度もごめんなさい。
前回は単に適正在庫数に足らないものだけを表示するだけです。
ご希望としてはそのリストを印刷できる表にしたい!ということだと思いますので、
もう一度画像をアップしてみます。

商品補充リストをSheet2に表示するようにしてみました。
Sheet1は前回そのままで、

Sheet2のA2セルに
=IF(COUNT(Sheet1!$C$2:$C$1000)<ROW(A1),"",INDEX(Sheet1!A$2:A$1000,SMALL(IF(Sheet1!$C$2:$D$1000<>"",ROW($A$1:$A$999)),ROW(A1))))

これは配列数式になってしまいますので、データ量が多...続きを読む

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

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


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

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

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

Aベストアンサー

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

QエクセルVBAで在庫管理。初心者です。

こんにちは。よろしくお願いします。
エクセルで出荷入力画面シートに数字を入力。もし、発注しなくてはならない
在庫数設定より(在庫限界入力シート)、その商品の総合計(在庫残高シート)が
少なくなったら、メッセージボックスに警告を表示したいのです。
先日、親切な方々のアドバイスで、以下のように組んで見ましたが、
入力シートにはたくさんの商品があり、どのセルに入れても全部同じメッセージ
ボックスがでてしまいます。これができないと、お茶組のままです。
がんばって作ってきたエクセルが、期限に間に合いません。助けてください。
Private Sub Worksheet_Calculate()
dim counter as integer
If Worksheets("在庫残高").Range("C6") < Worksheets("在庫限界入
力").Range("C6") Then
counter=Worksheets("在庫限界入力").Range("C6")-Worksheets("在庫
残高").Range("C6")
MsgBox counter& "本在庫不足", vbOKOnly, "警告"
End If
End Sub

一行目のworksheetをobjectにしてもだめでした。また()のなかに入力する
全てのセルの範囲を指定してもだめでした。
どうすればいいのでしょう。

こんにちは。よろしくお願いします。
エクセルで出荷入力画面シートに数字を入力。もし、発注しなくてはならない
在庫数設定より(在庫限界入力シート)、その商品の総合計(在庫残高シート)が
少なくなったら、メッセージボックスに警告を表示したいのです。
先日、親切な方々のアドバイスで、以下のように組んで見ましたが、
入力シートにはたくさんの商品があり、どのセルに入れても全部同じメッセージ
ボックスがでてしまいます。これができないと、お茶組のままです。
がんばって作ってきたエクセル...続きを読む

Aベストアンサー

>どのセルに入れても全部同じメッセージボックスがでてしまいます。
#241482については、単一の『C6』の変更時の判定の仕方を書いています。
どのようにして『Worksheets("在庫残高").Range("C6")』が更新されるか分からなかったからです。

この例を沢山の商品の在庫残高についても同様に使われているようですが、複数にするには変更が必要でしょう。
出荷入力画面シートの入力がどのように在庫残高シートに反映するかがはっきりしないと解決にはならないかもしれません。


出荷入力画面シートに入力すると在庫残高シートの『同じ列が更新』されるとすると、以下の訂正くらいで対応できるかもしれません。

出荷入力画面シートのコードウインドウに貼り付け、#241482と同じように、在庫残高シートで変動する数値を、出荷入力画面シートで分かるようにしておく必要があります。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim clm As Integer '入力したセルの列
  Dim counter As Long '不足数

  clm = Target.Column
  If Worksheets("在庫残高").Cells(6, clm) < Worksheets("在庫限界入力").Cells(6, clm) Then
    counter = Worksheets("在庫限界入力").Cells(6, clm) - Worksheets("在庫残高").Cells(6, clm)
    MsgBox counter & "本在庫不足", vbOKOnly, "警告"
  End If
End Sub

>どのセルに入れても全部同じメッセージボックスがでてしまいます。
#241482については、単一の『C6』の変更時の判定の仕方を書いています。
どのようにして『Worksheets("在庫残高").Range("C6")』が更新されるか分からなかったからです。

この例を沢山の商品の在庫残高についても同様に使われているようですが、複数にするには変更が必要でしょう。
出荷入力画面シートの入力がどのように在庫残高シートに反映するかがはっきりしないと解決にはならないかもしれません。


出荷入力画面シートに入力す...続きを読む

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

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

Aベストアンサー

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

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

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列全てコピーしたい場合。
  コ...続きを読む

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エクセルのIF関数で、文字が入力されていたならば~

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qバーコードを使って在庫管理をaccesかexcelで行いたいのですが。

こんにちは。
バーコードを使って自社倉庫内の在庫管理をaccesかexcelで行いたいと考えております。
ACCES,excelのマクロやVBA、をほんの少々かじったレベルです。
バーコードで自社倉庫内の商品を管理したいと考えております。
必要な機能としまして、商品の入庫、出庫、リアルタイム在庫の表示、月末棚卸し、csv出力等一般的な倉庫の在庫管理を作成できればと考えております。(入出庫履歴等の表示はほしいですが、販売管理は必要なく在庫の管理のみ必要です)
そして、それをラベル発行機とハンディーを使ってバーコードで管理できればと思っております。
正直全く何もないところから作成できる自信がありません。
そこで何か、参考になる書籍か安くて(1万円まで位)自分で改良できVBAのソースコード何かもコピペできるような都合のよいソフト等はありませんでしょうか?
それとも、その他方法はありませんか?
素人が手を出すなと言われそうですが、がんばってみたいなと思っております。
どうぞ、質問内容もわかりにくいところが多々あるとは思いますがどうぞご指導お願いいたします。

こんにちは。
バーコードを使って自社倉庫内の在庫管理をaccesかexcelで行いたいと考えております。
ACCES,excelのマクロやVBA、をほんの少々かじったレベルです。
バーコードで自社倉庫内の商品を管理したいと考えております。
必要な機能としまして、商品の入庫、出庫、リアルタイム在庫の表示、月末棚卸し、csv出力等一般的な倉庫の在庫管理を作成できればと考えております。(入出庫履歴等の表示はほしいですが、販売管理は必要なく在庫の管理のみ必要です)
そして、それをラベル発行機とハンディーを使...続きを読む

Aベストアンサー

だいぶ前ですが、ショップの生産指示や完成実績管理のため、バーコードを使ったシステムを自製したことがあります。
バーコードは社内利用なのでCODE39を使いましたが、バーコードの入出力自体は結構簡単にできました。(初めてだったんですが、2日間位で)
扱うデータが膨大だったので、DBはサーバーのORACLEを使い、管理部分や表示、帳票出力などの個別ソフトはVB、C、JAVA(Webベースでもできるようにしたため)などを使い、こちらのほうは多少時間を要しました。
在庫管理ソフト機能とDB構造をどうするかのほうが、いろいろな面で大変と思われます。

在庫管理の規模によると思いますが、質問の内容からは
リアルタイムに対応できるデータベースと専用の開発ソフトが必要なのか、扱うデータ量、運用する環境、期待するレスポンスなどが不明なので、Access/ExcelとMDBを使う程度で済むレベルなのか、VBAのみで構築は若干難しい気もしますが、Windows API等と組み合わせると何とかなりそうなレベルなのか、ちょっと判断ができません。
まずは、必要な機能と仕組みをきちんと整理してから、着手されたほうが良いと思われますが、簡単な仕組み(プロトタイプ)を作って実用性の確認をしてみる方法もあります。

実務に役立つ在庫管理・・・左側の目次から選択できます。
http://www.sk-zaiko.com/unyou/un04_barcode.html

ソフトに関しては自前で作成ばかりだったので、どういったものが出回っているかあまり知りません。
「在庫管理」、「在庫管理 ソフト」などをキーに検索してみてください。
 

だいぶ前ですが、ショップの生産指示や完成実績管理のため、バーコードを使ったシステムを自製したことがあります。
バーコードは社内利用なのでCODE39を使いましたが、バーコードの入出力自体は結構簡単にできました。(初めてだったんですが、2日間位で)
扱うデータが膨大だったので、DBはサーバーのORACLEを使い、管理部分や表示、帳票出力などの個別ソフトはVB、C、JAVA(Webベースでもできるようにしたため)などを使い、こちらのほうは多少時間を要しました。
在庫管理ソフト機能とDB構造をどうするかの...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報