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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос сортировки с заданием не ограниченого диапазона - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос сортировки с заданием не ограниченого диапазона (Макросы/Sub)
Макрос сортировки с заданием не ограниченого диапазона
drinklab Дата: Понедельник, 21.04.2014, 14:51 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Всем привет, подскажите пожалуйста, как написать макрос на сортировку от Я до А по столбцу С(дата). При создании макроса средствами MS он дает ограничение на кол-во строк исходя из строк в существующем листе(в новом листе с большим кол-вом строк этот макрос отбросит значения которые не входят в диапазон с прошлого листа), а мне нужно чтоб макрос был универсален и динамически вычислял кол-во строк в листе и сортировал их от Я до А по столбцу С, то есть по дате.

В MS макросе я выставил значение 9999, но в таблице бывает и больше 10000 строк, но как поменять стандартный макро,ума не приложу :\

[vba]
Код
Sub
Range("C3").Select
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("C4:C9999"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Ëèñò1").Sort
.SetRange Range("A3:G9999")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C4").Select
ActiveWindow.SmallScroll Down:=-6

End Sub
[/vba]
К сообщению приложен файл: test-1-.xls (26.0 Kb)
 
Ответить
СообщениеВсем привет, подскажите пожалуйста, как написать макрос на сортировку от Я до А по столбцу С(дата). При создании макроса средствами MS он дает ограничение на кол-во строк исходя из строк в существующем листе(в новом листе с большим кол-вом строк этот макрос отбросит значения которые не входят в диапазон с прошлого листа), а мне нужно чтоб макрос был универсален и динамически вычислял кол-во строк в листе и сортировал их от Я до А по столбцу С, то есть по дате.

В MS макросе я выставил значение 9999, но в таблице бывает и больше 10000 строк, но как поменять стандартный макро,ума не приложу :\

[vba]
Код
Sub
Range("C3").Select
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("C4:C9999"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Ëèñò1").Sort
.SetRange Range("A3:G9999")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C4").Select
ActiveWindow.SmallScroll Down:=-6

End Sub
[/vba]

Автор - drinklab
Дата добавления - 21.04.2014 в 14:51
_Boroda_ Дата: Понедельник, 21.04.2014, 16:23 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Последняя строка
[vba]
Код
r1_ = Range("C" & Rows.Count).End(xlUp).Row
[/vba]
диапазон
[vba]
Код
Range("C4:C" & r1_)
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПоследняя строка
[vba]
Код
r1_ = Range("C" & Rows.Count).End(xlUp).Row
[/vba]
диапазон
[vba]
Код
Range("C4:C" & r1_)
[/vba]

Автор - _Boroda_
Дата добавления - 21.04.2014 в 16:23
drinklab Дата: Вторник, 22.04.2014, 09:53 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо, лайк за мной)
получился макрос:
[vba]
Код
Sub Sort()
r1_ = Range("C" & Rows.Count).End(xlUp).Row
Range("C3").Select
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("C4:C" & r1_), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Лист1").Sort
.SetRange Range("C4:C" & r1_)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C4:C" & r1_).Select
ActiveWindow.SmallScroll Down:=-6

End Sub
[/vba]

но он сортирует теперь только столбец С от Я до А(другие ячейки остаются на месте),подскажите пожалуйста как его доделать так,чтоб он перемещал и другие ячейки в строках ,вместе с ячейками в столбце С при сортировке?

п.с.Извиняюсь за оформление,в будущем буду оформлять по правилом


Сообщение отредактировал drinklab - Вторник, 22.04.2014, 15:16
 
Ответить
СообщениеСпасибо, лайк за мной)
получился макрос:
[vba]
Код
Sub Sort()
r1_ = Range("C" & Rows.Count).End(xlUp).Row
Range("C3").Select
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("C4:C" & r1_), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Лист1").Sort
.SetRange Range("C4:C" & r1_)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C4:C" & r1_).Select
ActiveWindow.SmallScroll Down:=-6

End Sub
[/vba]

но он сортирует теперь только столбец С от Я до А(другие ячейки остаются на месте),подскажите пожалуйста как его доделать так,чтоб он перемещал и другие ячейки в строках ,вместе с ячейками в столбце С при сортировке?

п.с.Извиняюсь за оформление,в будущем буду оформлять по правилом

Автор - drinklab
Дата добавления - 22.04.2014 в 09:53
RAN Дата: Вторник, 22.04.2014, 22:55 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А кто заставлял ОДИН столбец для сортировки указывать?
.SetRange Range("C4:C" & r1_)


Add Key:=Range("C4:C" & r1_)

можно и так записать
[vba]
Код
Add Key:=Range("C4")
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 22.04.2014, 22:57
 
Ответить
СообщениеА кто заставлял ОДИН столбец для сортировки указывать?
.SetRange Range("C4:C" & r1_)


Add Key:=Range("C4:C" & r1_)

можно и так записать
[vba]
Код
Add Key:=Range("C4")
[/vba]

Автор - RAN
Дата добавления - 22.04.2014 в 22:55
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос сортировки с заданием не ограниченого диапазона (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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