ТЕМА: РЕДАКТИРОВАНИЕ. Не знаю в какую тему из выпадающего списка отнести.
Доброго всем времени суток. Подскажите, реальна ли автоматическая сортировка по столбцу по убыванию. Так например: в 3 строку ввожу самое большое число в столбце, а оно автоматически поднимается на верхнюю строку вместе с другими значениями других столбцов? Спасибо заранее.
ТЕМА: РЕДАКТИРОВАНИЕ. Не знаю в какую тему из выпадающего списка отнести.
Доброго всем времени суток. Подскажите, реальна ли автоматическая сортировка по столбцу по убыванию. Так например: в 3 строку ввожу самое большое число в столбце, а оно автоматически поднимается на верхнюю строку вместе с другими значениями других столбцов? Спасибо заранее.Lexx85
Private Sub Worksheet_Change(ByVal Target As Range) Макрос4 End Sub
Sub Макрос4() ActiveWorkbook.Worksheets("Лист5").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Лист5").Sort.SortFields.Add Key:=Range("A1:A9"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист5").Sort .SetRange Range("A1:B9") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
[/vba]
Запишите макрорекордером сортировку вашего диапазона и замените Макрос4 на название вашего макроса.
В модуль листа:[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Макрос4 End Sub
Sub Макрос4() ActiveWorkbook.Worksheets("Лист5").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Лист5").Sort.SortFields.Add Key:=Range("A1:A9"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист5").Sort .SetRange Range("A1:B9") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
[/vba]
Запишите макрорекордером сортировку вашего диапазона и замените Макрос4 на название вашего макроса.SkyPro
Уважаемые, пробую макрос на данном файле (во вложении), не выходит. Если честно, особо не разбираюсь в этом. Надо автоматически отсортировать столбец O в диапазоне (O9:O26). Если кто понимает, помогите. Заранее ОГРОМНОЕ спасибо.
Уважаемые, пробую макрос на данном файле (во вложении), не выходит. Если честно, особо не разбираюсь в этом. Надо автоматически отсортировать столбец O в диапазоне (O9:O26). Если кто понимает, помогите. Заранее ОГРОМНОЕ спасибо.Lexx85
Poltava Большое спасибо. Всё работает. Еще один вопрос: Когда в данном столбце показатели меняются не на прямую, а через формулу, автоматически не сортирует, это можно исправить. Хочу защиту на лист поставить, что бы формулы не сбили, и вносить данные из других листов. Пробую так, автоматически не сортирует, приходится на любой ячейке данного столбца мышкой 2 раза кликать. Заранее спасибо.
Poltava Большое спасибо. Всё работает. Еще один вопрос: Когда в данном столбце показатели меняются не на прямую, а через формулу, автоматически не сортирует, это можно исправить. Хочу защиту на лист поставить, что бы формулы не сбили, и вносить данные из других листов. Пробую так, автоматически не сортирует, приходится на любой ячейке данного столбца мышкой 2 раза кликать. Заранее спасибо.Lexx85
Тут два варианта. 1) Изменить адреса ячеек вызывающих макрос на адреса ячеек изменение которых могут приводить к пересчету формул. На мой взгляд более правильный потому как не будет срабатывать на каждый чихъ\ 2) Применить макрос ниже Но он срабатывает при пересчете ЛЮБОЙ формулы то есть при больших объемах формул не влияющих на конечные ячейки возможны тормоза
[vba]
Код
Private Sub Worksheet_Calculate() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Sort.SortFields.Clear ActiveSheet.Sort.SortFields.Add Key:=Range("O9:O26"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 'Тут "O9:O26" столбец по которому сортируеться With ActiveSheet.Sort .SetRange Range("A8:Q26") 'Тут "A8:Q26" диапазон который сортируеться .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.EnableEvents = True Application.ScreenUpdating = True End Sub
[/vba]
Тут два варианта. 1) Изменить адреса ячеек вызывающих макрос на адреса ячеек изменение которых могут приводить к пересчету формул. На мой взгляд более правильный потому как не будет срабатывать на каждый чихъ\ 2) Применить макрос ниже Но он срабатывает при пересчете ЛЮБОЙ формулы то есть при больших объемах формул не влияющих на конечные ячейки возможны тормоза
[vba]
Код
Private Sub Worksheet_Calculate() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Sort.SortFields.Clear ActiveSheet.Sort.SortFields.Add Key:=Range("O9:O26"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 'Тут "O9:O26" столбец по которому сортируеться With ActiveSheet.Sort .SetRange Range("A8:Q26") 'Тут "A8:Q26" диапазон который сортируеться .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Изменяться будут значения в столбце (K9:K26) берутся из другого файла по формуле ВПР, а исходя их них данные сортируются по столбцу (O9:O26). Так получится?
Изменяться будут значения в столбце (K9:K26) берутся из другого файла по формуле ВПР, а исходя их них данные сортируются по столбцу (O9:O26). Так получится?Lexx85