Sub 不足リスト作成()
'***********************************************
'管理表シートにないabcd装置を追加作成
'***********************************************
Dim Ws As Worksheet
Dim Myabcd() As Variant
Set Ws = Sheets("2026")
Dim XX As Long
XX = Ws.Cells(Rows.Count, 7).End(xlUp).Row
'***********************************************
'管理表シートにある現abcdの配列
'***********************************************
ReDim Myabcd((XX - 3) / 2)
For i = 4 To XX Step 2
Myabcd(i / 2 - 1) = Ws.Cells(i, 7).Value & "-" & Ws.Cells(i, 11).Value 'セルを配列に格納
Next i
'***********************************************
'管理表シートにある現abcdの配列を連想配列にする
'***********************************************
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
Dim AA As Long
For AA = LBound(Myabcd) To UBound(Myabcd)
myDic.Add Myabcd(AA), 1
Next AA
'***********************************************
'管理表シートに未登録装置を抽出すする
'***********************************************
Dim YY As Long
Dim arr() As String
Dim msg As String
Dim Yourabcd As Variant
Dim Ds As Worksheet 'abcdシートの全abcdリストから登録漏れを抽出
Set Ds = Sheets("japan")
YY = Ds.Cells(Rows.Count, 1).End(xlUp).Row
For AA = 2 To YY
msg = "追加装置はありません"
If Left(Ds.Cells(AA, 12), 4) = "abcd" Then
Yourabcd = Ds.Cells(AA, 2).Value & "-" & Ds.Cells(AA, 12).Value
If Not myDic.Exists(Yourabcd) Then
msg = "追加装置があります"
arr = Split(Yourabcd, "-")
Ws.Cells(XX + 1, 7) = arr(0)
Ws.Cells(XX + 2, 7) = arr(0)
Ws.Cells(XX + 1, 11) = arr(1)
Ws.Cells(XX + 2, 11) = arr(1)
Ws.Cells(XX + 1, 12) = 1
Ws.Cells(XX + 2, 12) = 2
XX = XX + 2
End If
End If
Next AA
MsgBox msg
End Sub