Sub Test()
Dim Rng As Range, r As Range
Dim i As Long, x As Long
Dim arr
Dim aStep As String
Dim oSet As Long
Dim Mn
Dim cel As Range, Lcel As Range
'Reset to original
Range("B:C").ClearContents
For Each cel In ActiveSheet.UsedRange
If cel.Interior.ColorIndex = 6 Then cel.Interior.ColorIndex = xlNone
If cel.Interior.ColorIndex = 35 Then cel.Interior.ColorIndex = xlNone
Next cel
Range("D3:D38").Interior.Color = Range("F3").Interior.Color
'Choose column
aStep = UCase(InputBox("Enter Step", , "NF8"))
oSet = Range("3:3").Find(aStep).Column - 4
'Find Product cells
Set Rng = Range("D:D")
arr = Data
x = UBound(arr)
Set r = Rng.Find(arr(0))
For i = 0 To x
Set r = Union(r, Rng.Find(arr(i)))
Next
'Mark cells for checking; not use in code
r.Offset(, -1) = "x"
'Set range to selected column
Set r = r.Offset(, oSet)
'Find minimum value; exclude 0
Mn = 10000
For Each cel In r
If Mn > cel And cel <> 0 Then Mn = cel.Value
Next
'Test for min values and apply colour
'Create result array
ReDim arr(Range("D:D").Count)
i = 0
For Each cel In r
If cel = Mn Then
cel.Interior.ColorIndex = 6
'Add data to array and increment
arr(i) = cel.Offset(, -oSet)
i = i + 1
'End of array creation
cel.Offset(, -oSet).Interior.ColorIndex = 6
Else
cel.Interior.ColorIndex = 35
cel.Offset(, -oSet).Interior.ColorIndex = 35
End If
Next
ReDim Preserve arr(i - 1)
'Show result from array
Range("B4").Resize(i) = Application.Transpose(arr)
Range("B4").EntireColumn.AutoFit
End Sub