I am just going to start off with this. Your strings are not the same, one contains commas, one contains semicolons, at end of the first there is multiple line breaks then second starts. This would be better if you just have a string that is user;country;city;user2;country2;city2 etc then no matter how long that string is you can toss this on a button and get a collection from it
ClearCollect(recordSet,
ForAll(Sequence(CountRows(Split(Label16,";"))/3,1,3) As recordGrab,
{User: Last(FirstN(Split(Label16,";"),recordGrab.Value)).Value,
Country: Last(FirstN(Split(Label16,";"),recordGrab.Value+1)).Value,
City: Last(FirstN(Split(Label16,";"),recordGrab.Value+2)).Value}))
Otherwise if the string is broken up liek in example with multiple separators you need something like this. It's much messier though
ClearCollect(recordSet,
ForAll(Sequence(CountRows(Split(Substitute(Substitute(Substitute(Substitute(Label16.Text,",",";"),Char(13),";"),Char(10),""),";;",";"),";"))/3,1,3) As recordGrab,
{User: Last(FirstN(Split(Substitute(Substitute(Substitute(Substitute(Label16.Text,",",";"),Char(13),";"),Char(10),""),";;",";"),";"),recordGrab.Value)).Value,
Country: Last(FirstN(Split(Substitute(Substitute(Substitute(Substitute(Label16.Text,",",";"),Char(13),";"),Char(10),""),";;",";"),";"),recordGrab.Value+1)).Value,
City: Last(FirstN(Split(Substitute(Substitute(Substitute(Substitute(Label16.Text,",",";"),Char(13),";"),Char(10),""),";;",";"),";"),recordGrab.Value+2)).Value}))