Перейти к содержимому

Kutools для Office — один пакет. Пять инструментов. Выполняйте больше.

Как рассчитать медиану при нескольких условиях в Excel?

Author Sun Last modified

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


Рассчитать медиану при соблюдении нескольких условий

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

a screenshot of the original data

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

a screenshot of typing new required data

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

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 screenshot of using the formula

Объяснение параметров и советы по использованию: В формуле $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, вы можете создать многоразовый макрос, который рассчитывает медиану на основе любого количества условий. Решения, основанные на 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. Нажмите Run button кнопку (или нажмите F5), чтобы запустить код. Вам будет предложено выбрать каждый из необходимых диапазонов и ввести свои критерии. После завершения запросов результат (медиана, соответствующая всем критериям) будет выведен в указанной целевой ячейке.

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

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

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


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


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

🤖 Kutools AI Aide: Совершенно новый подход к анализу данных благодаря: Интеллектуальное выполнение |  Генерация кода  |  Создание пользовательских формул |  Анализ данных и построение диаграмм  |  Вызов Kutools Functions
Популярные функции: Поиск, выделение или отметка дубликатов | Удалить пустые строки | Объединить столбцы или адреса без потери данных | Округлить ...
Супер ПОИСК: 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.

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