プロが教える店舗&オフィスのセキュリティ対策術

はじめて投稿します。
PCで在庫管理を初めてすることになりました。エクセルもまだまだ勉強中であります。どなたかにご教授して頂ければと思い投稿しました。

Sheet1に下記のデータがあります。在庫が0になったものは別シートに貼り付けていますが、元データの表は見栄えが悪くなっています(行ごと切り取りで貼り付けるため、そこが空欄になってしまうため)
 
 A列     B列       C列      D列
<会社名>  <伝票番号>  <出荷日>   <在庫>
 猫会社    11111     3/25      1
 犬会社    22222     3/25 0
 猫会社    33333     3/26      0

sheet1の在庫0の行は、その都度sheet2へ行ごと抽出したいのです。
そして、sheet1の在庫が0になったものは、見えない状態(非表示または、削除)されるようにしたいのですが、簡単にできる方法はないでしょうか?
どなたか教えて下さい。宜しくお願い致します。

A 回答 (3件)

Excelの制限で都度Sheet2への抽出は難しいです。


但し、Addinを使うことにより、元データはそのままで、
簡単に在庫0と在庫0以外のデータを別シートへ抽出できます。
ご参考ください。
http://superdbtool.com/blog/archives/111
?list=UU6a8VJcVsqk-4k2uqPZJ6cg
    • good
    • 0

こんばんは!



VBAでの一例です。
標準モジュールにしてください。

Sub Sample1()
Dim lastRow As Long, myRng As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
Set myRng = Range(.Cells(2, "A"), .Cells(lastRow, "D"))
.Range("A1").AutoFilter field:=4, Criteria1:=0
If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
myRng.SpecialCells(xlCellTypeVisible).Cut wS.Cells(Rows.Count, "A").End(xlUp).Offset(1)
Range(.Cells(2, "A"), .Cells(lastRow, "A")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
.AutoFilterMode = False
End With
End Sub

※ 関数でないので
データ変更があるたびにマクロを実行する必要があります。m(_ _)m
    • good
    • 0

オートフィルターはご存知でしょうか。


オートフィルターで D列 在庫が 0 のみ表示させる。
行方向で選択して、コピー & シート2へ貼付け
選択した行を削除
オートフィルターを解除すれば、必要な行だけが残ります。

これでよければ、一度、マクロの記録を実行してください。
必要なコードが自動で作成されます。
    • good
    • 0

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