Страницы: 1
RSS
Отсортировать по адресам (для одного ID несколько строк), таблицу можно редактировать как угодно
 
Чудесного дня!

Пожалуйста, расскажите, как в таблице во вложении отсортировать людей (объединения по id) по адресам
Таблицу можно редактировать как угодно
Первый столбец id. Второй разъединён для каждого id на имя в первой строке, адрес во второй, могут быть ещё строки. В итоговой сортировке по адресу достаточно иметь рядом имя и адрес, а лучше знать число строк каждого id, ещё лучше сохранить все данные как угодно рядом
 
alexeykotov, не пишите сообщения через строку.
 
alexeykotov, такой вариант подойдет? Пустые строки отфильтровал и удалил.
Изменено: Bema - 01.03.2017 11:51:58
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Да, этот список нужным образом не отсортируешь.
Для нормальной сортировки его необходимо преобразовать.

САМОЕ ГЛАВНОЕ - (к чему стремимся) и люди и их адреса и id должны находиться в одной строке. Все остальные строки лишние
Действуем-
ПЕРВОЕ - убрать в форматировании ячеек - их объединение.
ВТОРОЕ - Скопировать адрес в колонку С. Сделать это с помощью формулы  =ЕСЛИ(A2<>"";B3;"СтрокуУдалить")
Скопировать эту формулу на всю таблицу (можно с запасом). И после этого формулы заменить их значениями.
ТРЕТЬЕ - добавить дополнительный столбик - №пп(для восстановления первоначальной последовательности списка). Заполнить его номерами.
ЧЕТВЁРТОЕ - с помощью фильтра на столбике с адресом - удалить все строки с пометкой "СтрокуУдалить".
ВСЁ - список готов для любой сортировки и фильтрации.

Всю эту последовательность действий записать макрокодером.
И потом получившимся макросом, можно будет в один клик преобразовывать все последующие списки.
Предупреждаю. Записать макрос с первого раза не удастся. Но за то ..........
Изменено: Valera2 - 02.03.2017 01:15:47
 
Отличная работа!
Приложил файл со всеми данными в оригинальном формате
При сортировке адресов по алфавиту 18 оказывается между 220 и 148. Полагаю, стоит удалить всё до "кв:" включительно
И в некоторых файлах несколько адресов -- для таких хочется сперва делать группировки по адресам
И я ещё не писал макросы. Пожалуйста, расскажите подробнее, что для этой задачи делать, со скриншотами
 
Как сделать макрос?
Перед тем как начать выполнение ПЕРВОЕ, ВТОРОЕ, ТРЕТЬЕ, ЧЕТВЁРТОЕ
найдите в меню Экселя кнопочку "Запись макроса" и нажмите её - запомните имя предполагаемого макроса.
Выполните ПЕРВОЕ, ВТОРОЕ, ТРЕТЬЕ, ЧЕТВЁРТОЕ. Нажмите кнопочку "остановить запись"
Посмотреть на получившийся макрос можно в окне "VISUAL BASIC" на вкладке "Разработчик".

Как им воспользоваться?
Очень просто.
В этой же книге(файле) создайте новый лист. В него скопируйте исходный(неотредактированный) список.
Не переключаясь на другой лист запустите свой макрос
- он повторит сам с этим листом всё то, что вы делали с предыдущим списком.

Посмотрел на ваш оригинальный список. Теперь к ПЕРВОЕ, ВТОРОЕ и т.д. надо добавить НУЛЕВОЕ- Удаление ненужных столбиков.

И ещё
"кв18" и "кв 18" будут в разных местах отсортированного списка.
Что бы эта 18 кв встала туда, где мы ожидаем её увидеть
надо
или в исходной базе данных вставить пробел перед 18(перед всеми двухзначными номерами  и два пробела перед однозначными кв.),
или уже в отсортированном списке вставить пробел перед 18 и отсортировать заново.
Это в том случае если максимальный номер квартиры не больше 999.
 
Всё сделал, ещё добавил столбец с подключенными услугами. Чтобы они все были в верхней ячейке, проходом снизу
Прикладываю, что получилось
САМОЕ ВАЖНОЕ: после фильтра Excel не сортирует столбец адреса ни от А до Я, ни от Я до А
Что делать?
АПДЕЙТ: вставил значения в новой версии Office (которая, в отличие от старой, почему-то очень многие файлы не открывает до пересохранения старой версией -- 1!! как с этим быть?), теперь всё сортируется.

С "кв18" и "кв 18" всё в порядке. В выгрузке всё "кв:"
2!! Как *автоматически* обработать весь столбец с адресами, чтобы 18 было где надо, а не между 220 и 148?
Изменено: alexeykotov - 02.03.2017 15:48:46 (АПДЕЙТ)
 
Как автоматом подставить нужное количество пробелов перед номером квартиры?
1.В ячейку D5 надо ВСТАВИТЬ формулу:

=ПОДСТАВИТЬ(C5;"кв:";ЕСЛИ((3-((ЕСЛИОШИБКА(НАЙТИ(" ";C5;НАЙТИ("кв:";C5;1));ДЛСТР(C5)+1)-НАЙТИ("кв:";C5;1))-3))=2;"кв:  ";ЕСЛИ((3-((ЕСЛИОШИБКА(НАЙТИ(" ";C5;НАЙТИ("кв:";C5;1));ДЛСТР(C5)+1)-НАЙТИ("кв:";C5;1))-3))=1;"кв: ";"кв:")))

2.РАСПРОСТРАНИТЬ эту формулу до конца списка. Она покажет адреса с нужными побелами.
3.ЗАМЕНИТЬ формулы их значениями.
4.СКОПИРОВАТЬ эти значения в столбик с первоначальными адресами. После этого столбик D:D можно очистить.
 
Большое спасибо за детальный оперативный ответ!
Решено
Страницы: 1
Наверх