マトリックス図の在庫表から在庫ゼロを抽出して新しいシートに記入
マトリックス図の在庫表は、以下。シート名は、「在庫表」
この表から、在庫ゼロ(黄色セル)を抽出して、以下、シート「発注リスト」を作成する。
以下が、サンプルマクロです。
' マトリックス図の在庫表から在庫ゼロを抽出して新しいシートに記入
Private Sub CreateOrderList()
Dim ws As Worksheet
Dim orderWs As Worksheet
Dim lastRow As Long, lastCol As Long
Dim orderRow As Long
Dim i As Long, j As Long
' 在庫表のシートを指定
Set ws = ThisWorkbook.Sheets("在庫表")
' 発注リストの新しいシートを作成
On Error Resume Next
Set orderWs = Sheets("発注リスト")
On Error GoTo 0
If orderWs Is Nothing Then
Set orderWs = Sheets.Add(After:=Sheets(Sheets.Count))
orderWs.name = "発注リスト"
Else
orderWs.Cells.Clear
End If
' 在庫表のデータ範囲を特定
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).column
' 発注リストのヘッダを設定
orderWs.Range("A1:F1").Value = Array("商品名", "商品C", "事業所C", "事業所名", "在庫数", "発注数")
' 発注リストの行を初期化
orderRow = 2
' 在庫表をループして発注リストを作成
For i = 3 To lastRow ' 商品名行から開始
For j = 3 To lastCol ' 事業所列から開始
If CLng(ws.Cells(i, j).Value) = 0 Then ' 在庫が0の場合
' 発注リストにデータを追加
orderWs.Cells(orderRow, 1).Value = ws.Cells(i, 1).Value
orderWs.Cells(orderRow, 2).Value = ws.Cells(i, 2).Value
orderWs.Cells(orderRow, 3).Value = ws.Cells(1, j).Value
orderWs.Cells(orderRow, 4).Value = ws.Cells(2, j).Value
orderWs.Cells(orderRow, 5).Value = ws.Cells(i, j).Value ' 在庫数
orderWs.Cells(orderRow, 6).Value = 1 ' 発注数(規定値1)
orderRow = orderRow + 1
End If
Next j
Next i
End Sub