請測試看看,謝謝
Sub test()
Dim Arr, xD, TT$, T$, T1, Mg$, i&, j%
Set xD = CreateObject("Scripting.Dictionary")
With Sheet2
Arr = .[a1].CurrentRegion
For i = 4 To UBound(Arr)
T = Arr(i, 1) & "|" & Arr(i, 2)
For j = 3 To UBound(Arr, 2)
If .Cells(2, j).MergeCells Then Mg = IIf(.Cells(2, j) <> "", .Cells(2, j), Mg)
T1 = Arr(i, j): If T1 = "" Then GoTo 95
TT = T & "|" & Mg & "|" & Arr(3, j)
xD(TT) = T1
95: Next j
Next i
End With
With Sheet1
Arr = .[a1].CurrentRegion
For i = 4 To UBound(Arr)
T = Arr(i, 2) & "|" & Arr(i, 3)
For j = 4 To UBound(Arr, 2)
If .Cells(2, j).MergeCells Then Mg = IIf(.Cells(2, j) <> "", .Cells(2, j), Mg)
TT = T & "|" & Mg & "|" & Arr(3, j): Arr(i, j) = xD(TT)
96: Next j
Next i
.[a1].Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
|