Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/сортировка множества динамических диапазонов (тел. книга) - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
сортировка множества динамических диапазонов (тел. книга)
luny Дата: Четверг, 24.04.2014, 00:36 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
есть телефонный справочник периодически происходят изменения количества строк (абонентов) плюс минус 100 человек в одном городе т.к. справочник потом идет на печать пустые строки неприемлимы
необходимо каким либо образом (лучше макросом) заставить машину сортировать по алфавиту абонентов в пределах одного города для всех городов
может маркер какой добавить? или еще что?
подскажите/научите
К сообщению приложен файл: 5313971.xls (19.5 Kb)


Сообщение отредактировал luny - Четверг, 24.04.2014, 08:16
 
Ответить
Сообщениеесть телефонный справочник периодически происходят изменения количества строк (абонентов) плюс минус 100 человек в одном городе т.к. справочник потом идет на печать пустые строки неприемлимы
необходимо каким либо образом (лучше макросом) заставить машину сортировать по алфавиту абонентов в пределах одного города для всех городов
может маркер какой добавить? или еще что?
подскажите/научите

Автор - luny
Дата добавления - 24.04.2014 в 00:36
antal10 Дата: Четверг, 24.04.2014, 02:17 | Сообщение № 2
Группа: Проверенные
Ранг: Участник
Сообщений: 58
Репутация: 8 ±
Замечаний: 0% ±

Excel 2013
А сводной чё не годится?
 
Ответить
СообщениеА сводной чё не годится?

Автор - antal10
Дата добавления - 24.04.2014 в 02:17
luny Дата: Четверг, 24.04.2014, 08:19 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
antal10, только заметил что пример не подлился - сводная работает больше со столбцами вроде да и как научить ее что город 12 сегодня в одной ячейке завтра в другой
 
Ответить
Сообщениеantal10, только заметил что пример не подлился - сводная работает больше со столбцами вроде да и как научить ее что город 12 сегодня в одной ячейке завтра в другой

Автор - luny
Дата добавления - 24.04.2014 в 08:19
luny Дата: Пятница, 25.04.2014, 08:05 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
ни у кого идей нет? - это вообще возможно каким либо образом реализовать?
 
Ответить
Сообщениени у кого идей нет? - это вообще возможно каким либо образом реализовать?

Автор - luny
Дата добавления - 25.04.2014 в 08:05
Hugo Дата: Пятница, 25.04.2014, 09:57 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
Сделать можно что угодно...
Переименование я бы вообще убрал, унифицировал как "замена №".
Тогда список замен/переименований можно загнать в словарь, по которому проверить каждое значение. В принципе можно туда же добавить и удаление - тогда можно перекладывать все данные из одного массива в другой, по ходу дела заменяя или не перекладывая найденные в словаре замен/удалений.
Вот с добавлением пока не знаю как делать...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеСделать можно что угодно...
Переименование я бы вообще убрал, унифицировал как "замена №".
Тогда список замен/переименований можно загнать в словарь, по которому проверить каждое значение. В принципе можно туда же добавить и удаление - тогда можно перекладывать все данные из одного массива в другой, по ходу дела заменяя или не перекладывая найденные в словаре замен/удалений.
Вот с добавлением пока не знаю как делать...

Автор - Hugo
Дата добавления - 25.04.2014 в 09:57
luny Дата: Пятница, 25.04.2014, 18:18 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Hugo, разделил на переименование и прочее т.к. так удобнее переносить изменения из получаемого списка - замена № как правило 1-5 штук - не критично сделать вручную хотя алгоритм тот же что и переименовании и удалении

в VBA я только неделю и тапками прошу не кидать

идея вот какая возникла (я изучаю несколько книжек и уже несколько запутался) где то видел о присвоении абсолютного имени определенной ячейке - города обозвать индивидуально а диапазон в коде указывать уже в оригинальных названиях - по идее сколько строк между ними уже будет не важно - так прокатит?
если да то можно и добавлять так же - добавить строки после названия города (в оригинальных изменениях они есть) но можно по идее и следующим образом номера городов везде типа XX-xxx если номер начинается на XX то добавить N строк и скопировать


Сообщение отредактировал luny - Суббота, 26.04.2014, 11:40
 
Ответить
СообщениеHugo, разделил на переименование и прочее т.к. так удобнее переносить изменения из получаемого списка - замена № как правило 1-5 штук - не критично сделать вручную хотя алгоритм тот же что и переименовании и удалении

в VBA я только неделю и тапками прошу не кидать

идея вот какая возникла (я изучаю несколько книжек и уже несколько запутался) где то видел о присвоении абсолютного имени определенной ячейке - города обозвать индивидуально а диапазон в коде указывать уже в оригинальных названиях - по идее сколько строк между ними уже будет не важно - так прокатит?
если да то можно и добавлять так же - добавить строки после названия города (в оригинальных изменениях они есть) но можно по идее и следующим образом номера городов везде типа XX-xxx если номер начинается на XX то добавить N строк и скопировать

Автор - luny
Дата добавления - 25.04.2014 в 18:18
luny Дата: Суббота, 26.04.2014, 09:34 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
думаю вопрос решен хоть и криво
ячейку в столбце А обзываем город1а
ячейку в столбце В .............. город1в
так для каждого города
[vba]
Код

Sub Макрос1()

Range("город1а:город2в").Select
Selection.Sort Key1:=Range("город1в"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
[/vba]

и так надцать раз


Сообщение отредактировал Serge_007 - Суббота, 26.04.2014, 21:32
 
Ответить
Сообщениедумаю вопрос решен хоть и криво
ячейку в столбце А обзываем город1а
ячейку в столбце В .............. город1в
так для каждого города
[vba]
Код

Sub Макрос1()

Range("город1а:город2в").Select
Selection.Sort Key1:=Range("город1в"), Order1:=xlAscending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
[/vba]

и так надцать раз

Автор - luny
Дата добавления - 26.04.2014 в 09:34
luny Дата: Суббота, 26.04.2014, 16:01 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
получило то но не совсем - если по каким либо причинам в диапазоне оказалась пустая строка то макрос смещает значение записанное в ячейке с именем город2в
как задать правильно диапазон город1а:(город2в минус одна строка)
 
Ответить
Сообщениеполучило то но не совсем - если по каким либо причинам в диапазоне оказалась пустая строка то макрос смещает значение записанное в ячейке с именем город2в
как задать правильно диапазон город1а:(город2в минус одна строка)

Автор - luny
Дата добавления - 26.04.2014 в 16:01
ikki Дата: Суббота, 26.04.2014, 18:20 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
два допстолбца с простейшими формулами и сортировать по ним
только не забывать после сортировки формулы восстанавливать - сбиваются а то.

можно и макросик написать соответствующий
К сообщению приложен файл: 5562226.xls (23.5 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениедва допстолбца с простейшими формулами и сортировать по ним
только не забывать после сортировки формулы восстанавливать - сбиваются а то.

можно и макросик написать соответствующий

Автор - ikki
Дата добавления - 26.04.2014 в 18:20
luny Дата: Суббота, 26.04.2014, 19:04 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
ikki, вы наверное не совсем правильно поняли то что мне требуется...
 
Ответить
Сообщениеikki, вы наверное не совсем правильно поняли то что мне требуется...

Автор - luny
Дата добавления - 26.04.2014 в 19:04
luny Дата: Суббота, 26.04.2014, 19:10 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
если сделать следующим образом
в столбце А вручную присваиваем имена ячейкам тем самым ограничивая диапазон сортировки

в самом макросе
делаем поиск всех ячеек с абсолютными именами
сортируем диапазон перебирая имяN:имя(N+1) -1 строка вверх + 1 ячейка вправо (или можно добавить окошко с вопросом чтоб макрос универсальный был)

таким образом получим универсальный макрос для сортировки N количества динамических диапазонов
только мне такое не осилить - поможет может кто?


Сообщение отредактировал luny - Суббота, 26.04.2014, 20:54
 
Ответить
Сообщениеесли сделать следующим образом
в столбце А вручную присваиваем имена ячейкам тем самым ограничивая диапазон сортировки

в самом макросе
делаем поиск всех ячеек с абсолютными именами
сортируем диапазон перебирая имяN:имя(N+1) -1 строка вверх + 1 ячейка вправо (или можно добавить окошко с вопросом чтоб макрос универсальный был)

таким образом получим универсальный макрос для сортировки N количества динамических диапазонов
только мне такое не осилить - поможет может кто?

Автор - luny
Дата добавления - 26.04.2014 в 19:10
ikki Дата: Суббота, 26.04.2014, 19:12 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
ну нарисуйте пример того, что должно быть ДО сортировки и ПОСЛЕ.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениену нарисуйте пример того, что должно быть ДО сортировки и ПОСЛЕ.

Автор - ikki
Дата добавления - 26.04.2014 в 19:12
luny Дата: Суббота, 26.04.2014, 20:50 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
ikki,
К сообщению приложен файл: 6487284.xls (20.5 Kb)
 
Ответить
Сообщениеikki,

Автор - luny
Дата добавления - 26.04.2014 в 20:50
ikki Дата: Суббота, 26.04.2014, 21:03 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
и что?
в чём вы находите не совсем правильность моего понимания?

пс. в вашем варианте "после" в городе №2 пациент с именем "имя7" находится не на месте.
К сообщению приложен файл: 4767713.xls (36.5 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 26.04.2014, 21:08
 
Ответить
Сообщениеи что?
в чём вы находите не совсем правильность моего понимания?

пс. в вашем варианте "после" в городе №2 пациент с именем "имя7" находится не на месте.

Автор - ikki
Дата добавления - 26.04.2014 в 21:03
luny Дата: Суббота, 26.04.2014, 22:24 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
ikki, то что увидел я в вашем примере
город №1
город №1 имя1
город №1 имя2
город №1 имя3
город №1 имя4
город №1 имя5
город №1 имя6
город №2
город №2 имя10
город №2 имя11
город №2 имя7
город №2 имя8
город №2 имя9
город №3
город №3 имя12
город №2 имя13
город №2 имя14

мой пример не спорю могут быть ошибки - ребенок за руку дергал когда вводил - мог просмотреть

в моем справочнике около 70 городов/ диапазонов -как мне кажется - ваш пример куда неудобнее того что напридумывал я - хотя я и не понял как вы задаете диапазоны
 
Ответить
Сообщениеikki, то что увидел я в вашем примере
город №1
город №1 имя1
город №1 имя2
город №1 имя3
город №1 имя4
город №1 имя5
город №1 имя6
город №2
город №2 имя10
город №2 имя11
город №2 имя7
город №2 имя8
город №2 имя9
город №3
город №3 имя12
город №2 имя13
город №2 имя14

мой пример не спорю могут быть ошибки - ребенок за руку дергал когда вводил - мог просмотреть

в моем справочнике около 70 городов/ диапазонов -как мне кажется - ваш пример куда неудобнее того что напридумывал я - хотя я и не понял как вы задаете диапазоны

Автор - luny
Дата добавления - 26.04.2014 в 22:24
ikki Дата: Суббота, 26.04.2014, 22:26 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
не, ну конечно, если нажать одну кнопку для решения задачи - это неудобно, то я не спорю.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениене, ну конечно, если нажать одну кнопку для решения задачи - это неудобно, то я не спорю.

Автор - ikki
Дата добавления - 26.04.2014 в 22:26
luny Дата: Суббота, 26.04.2014, 22:31 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
ikki, поясните как вы диапазоны задаете - что будет с макросом после добавление в диапазон надцати строк
 
Ответить
Сообщениеikki, поясните как вы диапазоны задаете - что будет с макросом после добавление в диапазон надцати строк

Автор - luny
Дата добавления - 26.04.2014 в 22:31
ikki Дата: Суббота, 26.04.2014, 22:39 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
а вы добавьте строки и запустите макрос.
кто мешает?

диапазон с городами/пациентами задается один - ориентиром служит последняя заполненная ячейка в столбце B
в этой строке:[vba]
Код
Set r = Range(.[b5], .Cells(.Rows.Count, 2).End(xlUp))
[/vba]
ну и затем, для сортировки, он расширяется:[vba]
Код
r.Offset(, -1).Resize(, 4)
[/vba]

а вообще - код у вас есть.
временно закомментируйте строку [vba]
Код
Application.ScreenUpdating = False
[/vba]и пошагово выполните макрос, отслеживая значения переменных и изменения на листе.

я уверен - у вас всё получится ;)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 26.04.2014, 22:41
 
Ответить
Сообщениеа вы добавьте строки и запустите макрос.
кто мешает?

диапазон с городами/пациентами задается один - ориентиром служит последняя заполненная ячейка в столбце B
в этой строке:[vba]
Код
Set r = Range(.[b5], .Cells(.Rows.Count, 2).End(xlUp))
[/vba]
ну и затем, для сортировки, он расширяется:[vba]
Код
r.Offset(, -1).Resize(, 4)
[/vba]

а вообще - код у вас есть.
временно закомментируйте строку [vba]
Код
Application.ScreenUpdating = False
[/vba]и пошагово выполните макрос, отслеживая значения переменных и изменения на листе.

я уверен - у вас всё получится ;)

Автор - ikki
Дата добавления - 26.04.2014 в 22:39
luny Дата: Суббота, 26.04.2014, 22:44 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
ikki, не совсем то - как макрос отличает сам диапазон сортирует абонентов именно города 1 не перемешивая их с городом 2 - по пустой ячейке в столбце А?
 
Ответить
Сообщениеikki, не совсем то - как макрос отличает сам диапазон сортирует абонентов именно города 1 не перемешивая их с городом 2 - по пустой ячейке в столбце А?

Автор - luny
Дата добавления - 26.04.2014 в 22:44
ikki Дата: Суббота, 26.04.2014, 22:52 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
$^#^#%!

вам совсем лень сегодня думать?

ещё раз (хотя я об этом уже писал)
кроме того, всё описанное ниже есть в коде

1. макрос сортирует данные НЕ по столбцу B
2. для сортировки временно заполняются (с помощью формул) два соседних столбца:
столбец C - городами (для каждой строки)
столбец D - пациентами, причём для строк с городом соотв. ячейки в столбце D остаются пустыми.
3. затем сортируется весь диапазон строк по двум столбцам - сначала по C, а потом по D
4. после этого временные вспомогательнве столбца C и D очищаются.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение$^#^#%!

вам совсем лень сегодня думать?

ещё раз (хотя я об этом уже писал)
кроме того, всё описанное ниже есть в коде

1. макрос сортирует данные НЕ по столбцу B
2. для сортировки временно заполняются (с помощью формул) два соседних столбца:
столбец C - городами (для каждой строки)
столбец D - пациентами, причём для строк с городом соотв. ячейки в столбце D остаются пустыми.
3. затем сортируется весь диапазон строк по двум столбцам - сначала по C, а потом по D
4. после этого временные вспомогательнве столбца C и D очищаются.

Автор - ikki
Дата добавления - 26.04.2014 в 22:52
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!