Option Explicit
Sub TEST()
Dim Brr, Crr, Y, i&, T$, Sh(2)
'↑宣告變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y變數是 字典
Set Sh(1) = Sheets("未結訂單"): Set Sh(2) = Sheets("出貨明細")
'↑令Sh這一維陣列1~2索引號值各以工作表帶入
Brr = Sh(1).[A1].CurrentRegion: Crr = Sh(2).[A1].CurrentRegion
'↑令Brr,Crr變數各是二維陣列,各以儲存格值帶入陣列中
For i = 2 To UBound(Crr)
T = Crr(i, 1) & "|" & Crr(i, 2): Y(T) = Y(T) + Crr(i, 3)
Next
'↑設迴圈組合(訂單單號|料號)新字串當key,item是數量累加,納入Y字典裡
For i = 2 To UBound(Brr)
T = Brr(i, 1) & "|" & Brr(i, 2): Brr(i - 1, 1) = Brr(i, 3) - Y(T)
Next
'↑設迴圈將(訂單單號|料號)組合成的新字串查Y字典得到item值,
'當被減數做扣除,寫入Brr陣列的第1欄
Sh(1).[D2].Resize(UBound(Brr) - 1, 1) = Brr
'↑將Brr陣列值寫入"未結訂單"表結果欄中
Application.Goto Sh(1).[D2].Resize(UBound(Brr) - 1, 1)
'↑令儲存格游標跳到 "未結訂單"表結果欄中
Set Y = Nothing: Erase Brr, Crr, Sh
'↑令釋放變數
End Sub