Страницы: 1
RSS
Локальная сортировка
 
Здравствуйте. Прошу извинить, если задача слишком тривиальная, я новичок в этом. Необходимо отсортировать строки (вместе со ячейками, в которых значения) по возрастанию значений в ячейке, при этом в пределах одного id (см. скриншот). Строк довольно большое количество, но все они следуют правилу - на один id n (константа) строк, id (текстовые) изначально расположены так, чтобы не перемешиваться (что должно облегчить задачу). Думаю, что проще всего будет сделать решение в виде макроса (т.к. для разных файлов/лиcтов могут быть разные n), в котором будут указываться столбец, где содержатся id, количество строк на один id и столбец со значениями.
Скриншот:
https://dl.dropboxusercontent.com/u/29614570/Xls.png
Изменено: FuncX - 24.03.2015 21:47:57
 
Скрин, это хорошо, а файл где?
 
Выделяете ячейки(не строки, а именно ячейки) в столбце В в пределах одного ID и нажимаете сортировку
 
Прикрепляю файл с примером (сами же файлы слишком большие).
Цитата
МВТ написал: Выделяете ячейки(не строки, а именно ячейки) в столбце В в пределах одного ID и нажимаете сортировку
ID тысячи, вручную будет очень проблематично, именно поэтому и написал сюда.
 
Пробуйте
Код
Sub bb()
Dim i&, j&
j = 2
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row + 1
  If Cells(i, 1) <> Cells(j, 1) Then
    Range(Cells(j, 3), Cells(i - 1, 3)).Sort Cells(j, 3), xlAscending, Header:=xlNo
    j = i
  End If
Next
End Sub
Изменено: Казанский - 24.03.2015 22:20:56 (фирменную шапку забыл ))
 
Спасибо. Ваш код частично работает. Сортируется в пределах столбца, а
необходимо сортировать вместе со всеми соседними столбцами, т.е. целые
строки переставлять. Извиняюсь за скрин в первом посте, там не совсем это ясно. Лучше см. прикреплённый файл. Есть ещё одна просьба - т.к.
я новичок, то не могли бы вы, пожалуйста, добавить комментарии, какая переменная/какое значениия
отвечают за номер столбца с id, за номер столбца со значениями,
за количество строк на один id.
Изменено: FuncX - 05.05.2015 13:51:58
 
См. вариант (макрорекордер и немного напильником).
 
6 строка
Код
    Range(Cells(j, 3), Cells(i - 1, 3)).EntireRow.Sort Cells(j, 3), xlAscending, Header:=xlNo
Изменено: Казанский - 24.03.2015 23:33:21
 
 FuncX, можно было и здесь вопрос задать, а не писать в личку - для этого и форум создан. Если нужно сортировать не по столбцу С (это тройка в коде), то поменяйте везде тройку на нужный номер: D - это будет четвёрка))
 
Спасибо за помощь, разобрался.
Страницы: 1
Наверх