По пунктам:
1. Копируете шапку таблицы на все листы;
2. На листе с общим списком щелкаете ЛКМ в любой ячейки шапки;
3. Вкладка Данные - Фильтр
4. В ячейке с заголовком "населенный пункт" нажимаете на появившийся в нижнем правом углу треугольник;
5. В появившемся окне выбираем первый населенный пункт и нажимаем ОК;
6. Копируем отфильтрованные строки;
7. Вставляем на лист с именем совпадающим выбранному в фильтре населенному пункту;
8. Повторить пункты 5-7 для каждого населенного пункта.
Вжууухх!!! И всё готово.
UPD
Для автоматизации можно поступить следующим образом:
1. на листе с общим списком заводите поле, например Служебный код. (сделать надо слева от данных которые надо перенести)
2. в ячейке служебный код прописываете формулу аналогичную скрину
т.о. получаем значения в формате Город_который раз этот город встречается в общем списке.
Пример для ячейки В2: =СЦЕПИТЬ(E2;СЧЁТЕСЛИ($E$1:E2;E2))
3. На примере листа Москва:
Делаем таблицу аналогично общему списку.
В поле служебный код руками вводим первые 2 значения: Москва1 и Москва2. Далее протягиваем их вниз т.о. получив Москва3, Москва4 и тд.
4. С помощью ВПР тянем данные с листа с общим списком. Формулы на скрине
Пример для ячейки В2:=ВПР(A2;Список!B:G;2;0), для С2
=ВПР(A2;Список!B:G;3;0) и т.д.
5. Убираем значения #Н/Д с помощью фильтра, т.к. если мы на листе с городами завели строк больше чем по факту город встречается в основном списке то формула выдаст #Н/Д
Пусть костыльная, но самая быстрая возможность организации автоматизации.