Если вы строго ищете подход, основанный на функции рабочей таблицы, возможно, это не может быть рекомендуемым решением, однако здесь я использовал небольшую 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.