Як я розумію, у вас є набір щомісячних даних, які я припускаю, що триватимуть з січня по грудень, із даними кожного місяця, переліченими в окремому стовпчику та із коміркою заголовка. Ви хочете мати можливість сортувати цей набір даних на основі найбільших та найменших значень у конкретному місяці, із місяцем, обраним записом у комірку на робочому аркуші.
Хоча можна створити відсортоване відображення значень у наборі даних за допомогою формул робочого аркуша, сам набір даних не буде відсортований та потребує нефільтрування.
Використання 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). Було б доцільно встановити перевірку даних у цій комірці, щоб гарантувати, що до цієї комірки можуть бути введені лише дійсні імена місяця ("Jan", "Feb" тощо).
Код не повинен бути розміщений у стандартному модулі VBA, а замість цього повинен бути приєднаний до робочого аркуша. До кодової панелі робочого аркуша можна отримати доступ, клацнувши правою кнопкою миші на вкладці робочого аркуша та вибравши «Переглянути код». Потім код можна вставити на панель.
Хоча це може не відповідати вашим потребам, таблиця сортування може бути легко налаштована для загального використання (тобто для не розробників). У наведеній нижче версії передбачено перевірку даних, що випадають для запису місяця, додане форматування таблиці для читабельності та умовне форматування для виділення стовпця сортування.
