KutoolsforOffice — Одно решение — пять мощных инструментов.Меньше усилий — больше результата.

Как вычислить медиану в Excel с учётом нескольких условий?

АвторСунДата изменения

Вычисление медианы набора данных в Excel — распространённая и важная задача при анализе данных и подготовке отчётов. Хотя найти медиану простого диапазона легко с помощью стандартных функций Excel, на практике часто требуется определить медианное значение только для тех данных, которые соответствуют сразу нескольким конкретным критериям — например, вычислить медиану объёма продаж определённого товара за конкретную дату в большом массиве данных. Реализация подобных условных операций с использованием только традиционных функций может оказаться сложной или даже невозможной. В этом руководстве мы рассмотрим различные практические методы расчёта медианы по нескольким условиям в Excel — от формульных решений до автоматизации с помощью VBA для решения продвинутых задач.


Вычисление медианы при выполнении нескольких условий

Предположим, у вас есть диапазон данных, как показано ниже, и вам нужно найти медианное значение, соответствующее двум критериям: например, определить медиану значений в столбце B, где в столбце A указано «a», а в столбце C — дата «2 янв». Такой сценарий особенно часто встречается в отчётах по продажам, результатах тестирования и других бизнес- или учебных аналитических задачах, требующих фильтрации по нескольким категориям.

снимок экрана исходных данных

Для наглядности подготовьте лист следующим образом: введите свои условия на листе Excel и создайте макет, аналогичный приведённому ниже изображению. Столбец E содержит критерии для столбца A, а ячейки строки 1 в столбцах F и правее — критерии дат из столбца C.

снимок экрана ввода новых требуемых данных

Чтобы вычислить медиану с учётом нескольких критериев, используйте формулу массива, сочетающую функции МЕДИАНА и ЕСЛИ, — она создаёт отфильтрованный список значений на основе заданных условий. Вот как это сделать:

1.Щёлкните по ячейке F2, куда вы хотите поместить результат вычисления медианы, и введите следующую формулу:

=MEDIAN(IF($A$2:$A$12=$E2,IF($C$2:$C$12=F$1,$B$2:$B$12)))

Эта формула проверяет для каждой строки, совпадает ли значение в столбце A с условием из ячейки E2 и соответствует ли значение в столбце C заголовку в ячейке F1. Если оба условия выполнены, она выбирает соответствующее значение из столбца B для расчёта медианы.

2.После ввода формулы нажмите Ctrl + Shift + Enter (а не просто Enter), так как это формула массива. Excel автоматически заключит формулу в фигурные скобки { }, чтобы обозначить её как формулу массива.

3.Перетащите маркер заполнения из правого нижнего угла ячейки F2, чтобы скопировать формулу в другие нужные ячейки, где требуются медианы при различных условиях, как показано ниже:

снимок экрана использования формулы

Пояснение параметров и советы по использованию: В формуле $A$2:$A$12 — это диапазон, содержащий первое условие (например, названия товаров), $C$2:$C$12 — диапазон для второго условия (например, даты), а $B$2:$B$12 — диапазон числовых значений, для которых требуется найти медиану. При необходимости скорректируйте эти диапазоны под свой лист. Всегда используйте абсолютные ссылки (с символами $), чтобы диапазоны не смещались при копировании формулы.

Меры предосторожности: Если ни одно значение не удовлетворяет обоим условиям, формула вернёт ошибку #ЧИСЛО!. Чтобы избежать путаницы, поместите формулу внутрь функции ЕСЛИОШИБКА — тогда вместо ошибки будет отображаться пустая ячейка или ваше собственное сообщение:

=IFERROR(MEDIAN(IF($A$2:$A$12=$E2,IF($C$2:$C$12=F$1,$B$2:$B$12))),"No match")

Убедитесь, что в столбце с медианой нет пустых ячеек и нечисловых значений — это может повлиять на результаты.

Такой формульный подход отлично подходит для относительно простых условий — как правило, до двух–трёх критериев. Он быстро настраивается и не требует навыков программирования. Однако при сложной фильтрации с динамическими условиями или работе с большими наборами данных обслуживание и редактирование формул массива могут стать громоздкими.


Код VBA — вычисление медианы с несколькими условиями

Когда требуется автоматизировать расчёт условной медианы — например, при работе с множеством условий, большими объёмами данных или при частом изменении критериев — решение на основе VBA становится практичной альтернативой. С его помощью можно создать многократно используемый макрос, который будет вычислять медиану по любому количеству условий. Такие VBA-решения особенно полезны, если вы стремитесь упростить повторяющийся анализ или разработать собственные процессы в Excel для отчётности и панелей мониторинга.

Выполните следующие шаги, чтобы использовать VBA для вычисления условной медианы:

1. Нажмите Инструменты разработчика > Visual Basic. Откроется новое окно Microsoft Visual Basic for Applications. Нажмите Вставка > Модуль, затем вставьте следующий код в модуль:

Sub ConditionalMedian()
    Dim DataRange As Range
    Dim CriteriaRange1 As Range
    Dim CriteriaRange2 As Range
    Dim OutputRange As Range
    Dim Criteria1 As Variant
    Dim Criteria2 As Variant
    Dim TempArr() As Double
    Dim i As Long
    Dim j As Long
    Dim count As Long
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set DataRange = Application.InputBox("Select the range containing median values (e.g., B2:B12):", xTitleId, "", Type:=8)
    Set CriteriaRange1 = Application.InputBox("Select the first criteria range (e.g., A2:A12):", xTitleId, "", Type:=8)
    Criteria1 = Application.InputBox("Enter the first criteria value (e.g., a):", xTitleId, "", Type:=2)
    Set CriteriaRange2 = Application.InputBox("Select the second criteria range (e.g., C2:C12):", xTitleId, "", Type:=8)
    Criteria2 = Application.InputBox("Enter the second criteria value (e.g.,2-Jan):", xTitleId, "", Type:=2)
    Set OutputRange = Application.InputBox("Select the cell to output the result:", xTitleId, "", Type:=8)
    
    count = 0
    For i = 1 To DataRange.Rows.count
        If StrComp(CStr(CriteriaRange1.Cells(i, 1).Value), CStr(Criteria1), vbTextCompare) = 0 And _
           CStr(CriteriaRange2.Cells(i, 1).Value) = CStr(Criteria2) Then
            ReDim Preserve TempArr(count)
            TempArr(count) = DataRange.Cells(i, 1).Value
            count = count + 1
        End If
    Next i
    
    If count = 0 Then
        OutputRange.Value = "No match"
    Else
        Call QuickSort(TempArr, LBound(TempArr), UBound(TempArr))
        If count Mod 2 = 1 Then
            OutputRange.Value = TempArr(count \ 2)
        Else
            OutputRange.Value = (TempArr(count \ 2) + TempArr(count \ 2 - 1)) / 2
        End If
    End If
End Sub

Sub QuickSort(arr() As Double, first As Long, last As Long)
    Dim i As Long
    Dim j As Long
    Dim pivot As Double
    Dim temp As Double
    
    i = first
    j = last
    pivot = arr((first + last) \ 2)
    
    Do While i <= j
        Do While arr(i) < pivot
            i = i + 1
        Loop
        
        Do While arr(j) > pivot
            j = j - 1
        Loop
        
        If i <= j Then
            temp = arr(i)
            arr(i) = arr(j)
            arr(j) = temp
            i = i + 1
            j = j - 1
        End If
    Loop
    
    If first < j Then
        QuickSort arr, first, j
    End If
    
    If i < last Then
        QuickSort arr, i, last
    End If
End Sub

2. Нажмите кнопку Кнопка запуска (или клавишу F5), чтобы запустить код. Вам последовательно предложат выбрать нужные диапазоны и ввести критерии. После завершения ввода результат — медиана, удовлетворяющая всем условиям, — появится в указанной вами целевой ячейке.

Этот макрос обеспечивает гибкость при каждом запуске: вы можете выбирать диапазон значений, диапазоны и значения критериев, а также место вывода результата. При необходимости код легко адаптировать для добавления дополнительных условий.

Советы и устранение неполадок: При использовании решений на основе VBA убедитесь, что все выбранные диапазоны имеют одинаковую длину, а критерии соответствуют правильному типу данных и форматированию (например, текст или дата). Если ни одно значение не соответствует заданным условиям, результатом будет надпись «Совпадений нет». Для максимальной стабильности сохраняйте книгу перед запуском макроса и всегда разрешайте макросы при появлении соответствующего запроса. Это решение на основе VBA подходит для пользователей, знакомых с настройками безопасности макросов, и идеально вписывается в автоматизированные рабочие процессы Excel.

В итоге подход на основе VBA автоматизирует сложные вычисления медианы, которые трудно или неудобно выполнять исключительно с помощью формул. Он особенно эффективен при работе с переменными условиями, частыми пересчётами и большими объёмами данных.


Связанные статьи:


Лучшие инструменты повышения продуктивности в Office

🤖KUTOOLS AI Помощник: Преобразуйте Анализ данных с помощью:Интеллектуального выполнения   |  Генерации кода|  Создания пользовательские формулы  |  Анализа данных и построения диаграмм|  Вызова Расширенные функции
Популярные функции:Поиск, выделение или Отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячеек без потери данных   |  Округление без использования формул
Супер ПОИСК:VLookup по нескольким критериям  |  VLookup по нескольким значениям  |   VLookup по нескольким листам   |   Распознавание нечетких соответствий
Расширенный раскрывающийся список:Быстрое создание выпадающего списка   |  Зависимый выпадающий список   |  Выпадающий список с множественным выбором
Управление столбцами:Добавление заданного количества столбцов|Перемещение столбцов|Переключение видимости скрытых столбцов|Сравнение диапазонов и столбцов
Избранные функции:Сетка фокусировки   |  Просмотр дизайна   |Улучшенная строка формулы   | Управление рабочими книгами и листами   |  Библиотека ресурсов(автотекст)|  Выбор даты   |  Объединить листы  |  Шифрование/Расшифровать ячейки   | Отправка писем по списку   |  Супер фильтр   |   Специальный фильтр(Фильтр ячеек с жирным шрифтом/курсив/зачёркивание…) …
Лучшие наборы инструментов 15:12 Текстовыеинструменты(Добавить текст,Удалить определенные символы, …)|   50+Типыдиаграмм(Диаграмма Ганта, …)|   40+ Практические формулы(Рассчитать возраст на основе даты рождения, …)|   19 Инструментывставки(Вставить QR-код,Вставка изображения по пути, …)|   12 Инструментыпреобразования(Преобразовать в слова,Конвертация валют, …)|   7 Объединить и разделитьИнструменты(Расширенное объединение строк,Разделить ячейки, …)|… и многое другое
Используйте Kutools на предпочитаемом языке — поддержка английского, испанского, немецкого, французского, китайского и ещё 40+ языков!

Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…


Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу

  • Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
  • Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!

Все надстройки Kutools — один установщик

Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.

ExcelWordOutlookTabsPowerPoint
  • Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
  • Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
  • Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
  • 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек