Насколько я понимаю, у вас есть набор месячных данных, которые я предполагаю за период с января по декабрь, с данными каждого месяца, перечисленными в отдельном столбце и с ячейкой заголовка. Вы хотите иметь возможность сортировать этот набор данных на основе самых больших и самых маленьких значений в конкретном месяце, причем месяц выбирается записью в ячейке на рабочем листе.
Хотя можно получить отсортированное отображение значений в наборе данных с использованием формул рабочего листа, сам набор данных не будет отсортирован и его необходимо будет фильтровать.
Использование VBA позволит значительно упростить подход, который имеет дополнительное преимущество, заключающееся в возможности обработки отфильтрованных данных.
Я предполагаю, что запись месяца для сортировки будет в ячейке A1
, которая была названа sort_month
. Данные, включая заголовок для названий месяцев, находятся в столбцах B
- M
Диапазон данных называется filtered_data
данными; в моем примере данных это диапазон B1:M25
.
Код VBA, который будет выполнять сортировку, довольно короткий:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect(Target, Range("sort_month")) Is Nothing) Then
Dim theMonth As Long
theMonth = month(DateValue("01-" & Range("sort_month").Value & "-1900"))
Range("filtered_data").Sort Key1:=Cells(1, theMonth + 1), _
Order1:=xlDescending, header:=xlYes
End If
End Sub
Эта подпрограмма будет запускаться автоматически при каждом изменении в sort_month
(т. Е. В ячейке A1
). Было бы целесообразно настроить проверку данных в этой ячейке, чтобы в эту ячейку можно было вводить только допустимые названия месяцев ("январь", "февраль" и т.д.).
Код не должен быть помещен в стандартный модуль VBA, а должен быть прикреплен к рабочему листу. Доступ к области кода для рабочего листа можно получить, щелкнув правой кнопкой мыши вкладку рабочего листа и выбрав "Просмотр кода". Код может быть вставлен в панель.
Хотя сортируемая таблица может не соответствовать вашим потребностям, ее можно легко настроить для общего (т.е. не для разработчиков) использования. Версия, показанная ниже, имеет проверку выпадающих данных для записи месяца, добавлено форматирование таблицы для удобства чтения и условное форматирование для выделения столбца сортировки.
