У Эмина есть диапазон ячеек, в котором может быть текст или числа.

Ему нужен способ определить наименьшее четное число в диапазоне. Эмин задается вопросом, можно ли это сделать с помощью формулы или ему нужна функция, определяемая пользователем.

Есть несколько способов решить эту проблему. Один из способов, который вы можете попробовать, — это использовать функцию DMIN. Все, что вам нужно, — это убедиться, что у вас есть заголовок в столбце данных (например, «Мои данные»), а затем создать небольшое поле критериев в каком-нибудь недоступном месте. Например, вы можете создать поле критериев, поместив заголовок (например, «Min Even») в ячейку F1 и поместив формулу = ISEVEN (MyData) в ячейку F2. Ячейка F2 оценивается как #VALUE! ошибка, но в данном случае это нормально. Затем вы можете использовать следующую формулу в другой ячейке:

=DMIN(A1:A100, 1, F1:F2)

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

=MIN(IF(MOD(A1:A100,2)=0,A1:A100))

Чтобы убедиться, что вы не получаете ошибок, вам нужно проверить формулу:

=MIN(IF(ISNUMBER(A1:A100),IF(NOT(MOD(A1:A100,2)=0),"",A1:A100)))

Опять же, помните, что это формула массива, поэтому вам нужно ввести ее, используя Shift + Ctrl + Enter.

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

Function MinEven(rng As Range)

Dim rCell As Range     Dim bNotFound As Boolean

Application.Volatile     MinEven = 9.99 * 10 ^ 307     bNotFound = True     For Each rCell In rng         If Application.WorksheetFunction.IsNumber(rCell) Then             If rCell Mod 2 = 0 Then                 If rCell < MinEven Then                     MinEven = rCell                     bNotFound = False                 End If             End If         End If     Next     If bNotFound Then MinEven = CVErr(xlErrNum)

End Function

Чтобы использовать этот макрос, просто используйте следующую строку с ячейкой вашего рабочего листа:

=MinEven(A1:A100)

Если в диапазоне нет четных чисел, функция вернет ошибку #Num.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (119) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Finding_the_Smallest_Even_Value [Поиск наименьшего четного значения].