So I refactored your code, meaning I did not change what it does, just made it more "Best Practice" so I could understand it
Sub mySearch()
Dim gCell As Range
Dim c As Range
Dim i As Variant
Dim r as Long
For r = 1 to Cells(Rows.Count, "AN").End(xlUp.Row
If IsEmpty(Cells(r, "H")) Then
For Each c In Range(Range("E1"), Cells(Rows.Count, "AL").End(xlUp))
'Holy Loops Batman! For every cell in 34 columns, Find a Match in the rest of the column below that cell! Of course that only happens when there is no matching value.
'You are lucky that Excel goes across, then down
i = Application.Match(Cells(r, "AN").Value, Range(c, c.End(xlDown)), 0)
If Not IsError(i) Then
Cells(r, "H") = i
'i = the number of rows below c.Row
'the Column = c.Column
Exit For
End If
Next
End If
If IsEmpty(Cells(r, "H")) Then Cells(r, "H") = "#N/A"
Next
End Sub