Если вы строго ищете подход, основанный на функции рабочей таблицы, возможно, это не может быть рекомендуемым решением, однако здесь я использовал небольшую UDF (пользовательскую функцию), чтобы упростить задачу.
Этот UDF принимает Range и возвращает массив Max каждого столбца в этом диапазоне.
Нажмите ALT+ F11для доступа к VBA Editor. Вставьте модуль из меню вставки. Теперь вставьте в него следующий код.
Function Ret_Arr(inpt As Range) As Variant Dim v As Variant ReDim v(1 To inpt.Columns.Count) For i = 1 To inpt.Columns.Count v(i) = Application.Max(inpt.Columns(i)) Next i Ret_Arr = v End Function
Обратите внимание, что в этот базовый код не нужно много проверок, чтобы сделать его устойчивым на всякий случай.
Это берет Range и возвращает массив Max из каждого столбца, который вы можете использовать в формуле массива.
Сохраните код VBA и рабочую таблицу в виде рабочей таблицы с поддержкой макросов XLSM на случай, если вы используете Excel 2007 и выше.
В этом примере пример данных находится в ячейках A1: D8. В E2 поместите следующую формулу и нажмите CTRL+ SHIFT+ на панели формул, ENTERчтобы создать формулу массива.
Формула должна быть заключена в фигурные скобки, чтобы указать, что это формула массива
=SUM(IF($A2:$D2>=Ret_Arr($A$1:D1),1,0))
Теперь для каждого диапазона выше Ret_Arr должен возвращать массив Max каждого столбца. Если вы не передадите правильный диапазон в Ret_Arr, вы можете получить ошибочные результаты. Поэтому, если ваши столбцы имеют значения от A до D, убедитесь, что передали UDF одинаковый диапазон столбцов от A до D.