Aha, takže tá "země" má byť vždy uvedená v nejakom inom stĺpci, t.j. neplatí, jeden kontakt=jedna země. V tom prípade skús toto, základ je funkčný, prípadnú optimalizáciu a ošetrenie chýb už nechám na tebe. Nabudúce vlož prílohu rovno, aby sa nemuselo tápať, čo vlastne potrebuješ, pôvodné zadanie som chápal trochu inak.
Sub GenerujListy()
Dim srcSh As Worksheet, sh As Worksheet, srcRng As Range, cell As Range, tgtSh As Worksheet, tgtRng As Range
Set srcSh = Sheets("Kontakty")
For Each sh In Worksheets
Application.DisplayAlerts = False
If sh.Name <> srcSh.Name Then sh.Delete
Application.DisplayAlerts = True
Next sh
Set srcRng = [L1]
Set srcRng = Range(srcRng, srcRng.End(xlToRight))
For Each cell In srcRng
srcSh.Copy after:=Sheets(Sheets.Count)
Set tgtSh = ActiveSheet
With tgtSh
.Name = cell
Set tgtRng = .[A1].CurrentRegion
Set tgtRng = tgtRng.Offset(1, 0).Resize(tgtRng.Rows.Count, 1)
.[A1].AutoFilter FIELD:=cell.Column, Criteria1:="="
tgtRng.EntireRow.Delete
.[A1].AutoFilter
Set tgtRng = .[K1]
Set tgtRng = Range(tgtRng, tgtRng.End(xlToRight))
tgtRng.EntireColumn.Delete
Rows("1:1").Insert
.[A1] = "Kontakty"
Set tgtRng = .[A1:J1]
With tgtRng
.Font.Size = 14
.Font.Bold = True
.Interior.Color = 49407
End With
End With
Next cell
End Subcitovat