Possibly this
To keep the formula simple use a dynamic named range
Name:= "Countries"
Refers to:=
Formula:
='List of countries'!$B$3:INDEX('List of countries'!$B:$B,MATCH(REPT("z",255),'List of countries'!$B:$B,1))
Then this array formula
Formula:
=IFERROR(INDEX(Countries,MATCH(TRUE,ISNUMBER(SEARCH(" "&Countries&" "," "&SUBSTITUTE(SUBSTITUTE(B2,"."," "),","," ")&" ")),0)),"")
Confirm with Ctrl+Shift+Enter not just Enter Before dragging Down.
Notes
1/. Yor profile is 2007 but the file provided is 2003, this is for 2007
2/. Extend the nested SUBSTITUTE() formula if there are more punctuation marks to allow for.
3/. If there is more than one country in the string the first found in the "Countries" range will be returned
Bookmarks