Option Explicit
Private Sub WorkSheet_Change(ByVal Target As Range)
  If Not Intersect(Range("B3:E10000", "H3:K10000"), Target) Is Nothing Then
      Application.ScreenUpdating = False
      UpdateB3
  End If
End Sub
Private Sub UpdateB3()
       Dim N1 As Integer, N2 As Integer, N As Integer, i As Integer, j As Integer, k As Integer, i3 As Integer, Dem As Integer
       Dim Rgn1 As Range, Rgn2 As Range, aCo() As Byte: Dim Item_i, Order_i, Item_j, Order_j
       
       Range("M3", Range("Q10000").End(xlUp).Address).ClearContents
       N1 = Range("B10000").End(xlUp).Row - 3 + 1: N2 = Range("H10000").End(xlUp).Row - 3 + 1: N = N1 + N2
       ReDim aCo(N): For i = 1 To N: aCo(i) = 0: Next i  
       
       Set Rgn1 = Range("A3", Range("A3").Offset(N1 - 1, 4).Address)
       Set Rgn2 = Range("G3", Range("G3").Offset(N2 - 1, 4).Address)
   
       i3 = 0: Dem = 0
       For i = 1 To N
        If aCo(i) = 0 Then
          aCo(i) = 1: k = i: Dem = Dem + 1
          If i <= N1 Then
                Item_i = Rgn1(i, 2): Order_i = Rgn1(i, 3)
          Else: Item_i = Rgn2(i - N1, 2):   Order_i = Rgn2(i - N1, 3): End If
          
          For j = i + 1 To N
            If aCo(j) = 0 Then
                If j <= N1 Then
                        Item_j = Rgn1(j, 2):        Order_j = Rgn1(j, 3)
                Else:   Item_j = Rgn2(j - N1, 2):    Order_j = Rgn2(j - N1, 3): End If
                If Item_i = Item_j And Order_i = Order_j Then: aCo(j) = 1: k = j: Dem = Dem + 1
            End If
          Next j
          
          i3 = i3 + 1: Range("M3").Offset(i3 - 1, 0).Value = i3
          With Range(Range("M3").Offset(i3 - 1, 1).Address, Range("M3").Offset(i3 - 1, 4).Address)
            If k <= N1 Then
                    .Value = Range(Rgn1(k, 2).Address, Rgn1(k, 5).Address).Value
            Else:   .Value = Range(Rgn2(k - N1, 2).Address, Rgn2(k - N1, 5).Address).Value: End If
          End With
        End If
        If Dem = N Then Exit For
       Next i
End Sub