Excel 2010 динамічна фільтрація


0

У мене є велика таблиця даних, яка має дати вгорі. Тут увімкнено фільтри. Мені потрібно сортувати ці дані (найбільші до найменших) на основі дати, введеної у визначене користувачем поле. Але я не знаю, як зробити це динамічним.

Так що скажіть, у мене є 12 колон із місяцем у верхній частині кожного, а потім набір цифр внизу. Якщо я ввожу лютий у конкретну клітинку, то я хочу, щоб сорт сортувався за стовпчиком лютого від найбільшого до найменшого. Якщо я потім зміню комірку лютого на травень, я хочу, щоб вона сортувала дані травня

Будь-яка допомога, будь ласка


1
Ви маєте на увазі, що вам потрібен сортуючий колонку?
чаф

1
"Сортувати дані на основі введеної дати" як саме?
Каран

Так що скажіть, у мене є 12 колон із місяцем у верхній частині кожного, а потім набір цифр внизу. Якщо я ввожу лютий у конкретну клітинку, то я хочу, щоб сорт сортувався за стовпчиком лютого від найбільшого до найменшого. Якщо я потім зміню осередок лютого на травень, я хочу, щоб він сортував дані за травнем
simon

Що ви вже пробували та / або досліджували? Яку версію Excel ви використовуєте? Чи потрібний ефект для сортування всієї таблиці або лише конкретного стовпця?
CharlieRB

Відповіді:


1

Як я розумію, у вас є набір щомісячних даних, які я припускаю, що триватимуть з січня по грудень, із даними кожного місяця, переліченими в окремому стовпчику та із коміркою заголовка. Ви хочете мати можливість сортувати цей набір даних на основі найбільших та найменших значень у конкретному місяці, із місяцем, обраним записом у комірку на робочому аркуші.

Хоча можна створити відсортоване відображення значень у наборі даних за допомогою формул робочого аркуша, сам набір даних не буде відсортований та потребує нефільтрування.

Використання 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, а замість цього повинен бути приєднаний до робочого аркуша. До кодової панелі робочого аркуша можна отримати доступ, клацнувши правою кнопкою миші на вкладці робочого аркуша та вибравши «Переглянути код». Потім код можна вставити на панель.

Хоча це може не відповідати вашим потребам, таблиця сортування може бути легко налаштована для загального використання (тобто для не розробників). У наведеній нижче версії передбачено перевірку даних, що випадають для запису місяця, додане форматування таблиці для читабельності та умовне форматування для виділення стовпця сортування.

відформатована сортована таблиця

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.