Как сделать кнопки или ссылки для сортировки данных? А именно:
- в аттаче файл - сезонность.xlsx - справа, где формулы ранга, данные, с помощью которых сортируются основные цифры - формулы ранга хочу скрыть - при этом сделать нечто вроде ссылок, например "сортировка Январь", при нажатии на которую основные цифры слева автоматически отсортируются, основываясь на формулах ранга
Цель: Создать ссылку или кнопку, при нажатии на которую будут сортироваться основные данные на основе скрытых дополнительных данных
Как сделать кнопки или ссылки для сортировки данных? А именно:
- в аттаче файл - сезонность.xlsx - справа, где формулы ранга, данные, с помощью которых сортируются основные цифры - формулы ранга хочу скрыть - при этом сделать нечто вроде ссылок, например "сортировка Январь", при нажатии на которую основные цифры слева автоматически отсортируются, основываясь на формулах ранга
Цель: Создать ссылку или кнопку, при нажатии на которую будут сортироваться основные данные на основе скрытых дополнительных данныхEdinstvo
Так пойдет? Простенький макрос на быструю руку. Сортировку правее на 13 столбцов от выделенной ячейки [vba]
Код
Sub SORT() Dim R As Range Set R = Selection.Offset(, 13) Set R = Range(Cells(1, R.Column), Cells(100, R.Column)) ActiveWorkbook.Worksheets("Москва").AutoFilter.SORT.SortFields.Clear ActiveWorkbook.Worksheets("Москва").AutoFilter.SORT.SortFields.Add Key:=R _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Москва").AutoFilter.SORT .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
[/vba]
Так пойдет? Простенький макрос на быструю руку. Сортировку правее на 13 столбцов от выделенной ячейки [vba]
Код
Sub SORT() Dim R As Range Set R = Selection.Offset(, 13) Set R = Range(Cells(1, R.Column), Cells(100, R.Column)) ActiveWorkbook.Worksheets("Москва").AutoFilter.SORT.SortFields.Clear ActiveWorkbook.Worksheets("Москва").AutoFilter.SORT.SortFields.Add Key:=R _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Москва").AutoFilter.SORT .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Формулу РАНГ переписываем так, что 12 столбцов не нужно. Хватит одного столбца и выпадающего списка. Дальше макрос [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "AA1" Then Application.ScreenUpdating = 0 ActiveWorkbook.Worksheets("Москва").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Москва").AutoFilter.Sort.SortFields.Add Key:=Range _ ("AA1:AA27") With ActiveWorkbook.Worksheets("Москва").AutoFilter.Sort .Orientation = xlTopToBottom .Apply End With Application.ScreenUpdating = 1 End If End Sub
[/vba] При изменении в вып. списке данные сортируются по возрастанию рангов, а внутри одинаковых рангов по убыванию.
Автофильтр в столбце АА есть, но сделан невидимым.
Формулу РАНГ переписываем так, что 12 столбцов не нужно. Хватит одного столбца и выпадающего списка. Дальше макрос [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "AA1" Then Application.ScreenUpdating = 0 ActiveWorkbook.Worksheets("Москва").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Москва").AutoFilter.Sort.SortFields.Add Key:=Range _ ("AA1:AA27") With ActiveWorkbook.Worksheets("Москва").AutoFilter.Sort .Orientation = xlTopToBottom .Apply End With Application.ScreenUpdating = 1 End If End Sub
[/vba] При изменении в вып. списке данные сортируются по возрастанию рангов, а внутри одинаковых рангов по убыванию.
Автофильтр в столбце АА есть, но сделан невидимым._Boroda_