just clicked what you are doing. the number "numdetected" needs to progress on every loop
the
 For rowcounter = firstrow To lastrow
        numdetected = numdetected + 1
        If WorksheetFunction.IsText(List(rowcounter, firstcolumn)) Then
            If numdetected = listpos Then
                nonzerotext = List(rowcounter, firstcolumn)
            End If
        End If

    Next rowcounter