You'll need to at least adjust the ranges
Option Explicit
Sub MixingUp()
Dim rShops As Range, rProducts As Range
Dim rShop As Range, rProduct As Range
Dim wsOutput As Worksheet
Dim iOut As Long
Set rShops = Worksheets("Shops").Cells(1, 1)
Set rShops = Range(rShops, rShops.End(xlDown))
Set rProducts = Worksheets("Products").Cells(1, 1)
Set rProducts = Range(rProducts, rProducts.End(xlDown))
Set wsOutput = Worksheets("Shops+Products")
iOut = 2
Application.ScreenUpdating = False
For Each rShop In rShops.Cells
For Each rProduct In rProducts.Cells
wsOutput.Cells(iOut, 1).Value = rShop.Value
wsOutput.Cells(iOut, 2).Value = rProduct.Value
wsOutput.Cells(iOut, 3).Value = rProduct.Offset(0, 1).Value
iOut = iOut + 1
Next
Next
Application.ScreenUpdating = True
End Sub
Arrays might be a little faster, but this is simpler I think