=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
makes sure the cells we look at aren't empty -
=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
Makes sure we haven't already found the name -
=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
Looks for names used more than twice -
=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
If we find one, we save the row times 100 + the column, so B8 becomes 802 -
=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
Gets the smallest of any matching cells -
=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
Formats the 802 value as R08C02 -
=IFERROR(INDIRECT(TEXT(SMALL(IF($A$8:$F$35<>"",IF(COUNTIF($H$7:$H7,$A$8:$F$35)=0,IF(COUNTIF($A$8:$F$35,$A$8:$F$35)>2,ROW($A$8:$F$35)*100+COLUMN($A$8:$F$35)))),1),"R00C00"),0),"")
Then the INDIRECT looks up the address we just found, R08C02. The 0 parameter at the end says to use the R1C1 style of addressing, instead of B8. Then the IFERROR kicks in if there are no matches.
I can't explain why you didn't get any more matches than the first, unless you didn't use Control+Shift+Enter, or have different data/ranges.