Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2016, 15:53   #1
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию Сортировка как заставить код формировать сортировку по месту расположения верхней строки сортируемого массива

Здравствуйте, уважаемые форумчане!
Вот нашел на форуме прекрасный пример сортировки.
Код:
Option Explicit

Sub SortByLists()

With ActiveSheet.Sort
  With .SortFields
    .Clear
    .Add [C1], xlSortOnValues, xlAscending, GetList(2), xlSortNormal
    .Add [E1], xlSortOnValues, xlAscending, GetList(1), xlSortNormal
    .Add [D1], xlSortOnValues, xlAscending, GetList(3), xlSortNormal
  End With
  .SetRange Range("A:G")
  .Header = xlYes
  .MatchCase = False
  .Orientation = xlTopToBottom
  .SortMethod = xlPinYin
  .Apply
End With

End Sub

Private Function GetList(n&)

With Sheets("Списки")
  With Range(.Cells(1, n), .Cells(.Rows.Count, n).End(xlUp))
    GetList = Join(Application.Transpose(.Value), ",")
  End With
End With

End Function
Данный код прекрасно сортирует, но всегда "приводит" отсортированный массив ко второй строке листа.
А как заставить его(код) формировать сортировку по месту расположения верхней строки сортируемого массива, ну например с 13-й строки листа.
Trimbl вне форума Ответить с цитированием
Старый 29.04.2016, 07:27   #2
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию

Не знаю, правильно -ли поступаю по отношению к автору кода(Казанский, спасибо, если не ошибаюсь, -Алексей), но решил отписаться. Возникший вопрос решил следующим образом:
1). Устанавливаем диапазон сортировки .SetRange Range("A13:G40")
2). Аргумент сортировки - .Header = xlYes меняем на .Header = xlNo 'первая строка диапазона не содержит заголовка, по умолчанию считается данное значение.
3). Получаем The Best сортировку диапазона по трем параметрам, по настраиваемым спискам.

Тему можно закрывать.
Trimbl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на сортировку массива символов (строки), С++ _Name_ Помощь студентам 0 14.12.2014 19:05
Сортировка столбцов с данными по значению в верхней ячейке ymnuhj Microsoft Office Excel 2 27.03.2012 20:54
Не знаю как реалтзовать сортировку массива (Паскаль) WRNWRN Помощь студентам 7 20.12.2010 22:07
Как определить номер строки верхней левой ячейки диапазона Porog Microsoft Office Excel 8 09.05.2008 08:37