Emin có một loạt các ô trong đó có thể có văn bản hoặc số.

Anh ta cần một cách để xác định số chẵn nhỏ nhất trong phạm vi. Emin tự hỏi liệu điều này có thể được thực hiện với một công thức hay anh ta cần một hàm do người dùng xác định.

Có một số cách bạn có thể tiếp cận vấn đề này. Một phương pháp bạn có thể thử là sử dụng hàm DMIN. Tất cả những gì bạn cần là đảm bảo rằng bạn có tiêu đề trên cột dữ liệu của mình (chẳng hạn như “MyData”) và sau đó tạo một trường tiêu chí nhỏ ở một số nơi khác biệt. Ví dụ: bạn có thể muốn tạo trường tiêu chí bằng cách đặt tiêu đề (chẳng hạn như “Min Even”) trong ô F1 và đặt công thức = ISEVEN (MyData) trong ô F2. Ô F2 cho giá trị lỗi #VALUE! lỗi, nhưng điều đó là tốt trong trường hợp này. Sau đó, bạn có thể sử dụng công thức sau trong một ô khác:

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

Nếu muốn, bạn có thể sử dụng công thức mảng để tìm ra giá trị chẵn thấp nhất. Tuy nhiên, vì phạm vi dữ liệu của bạn có thể chứa văn bản cũng như số, nên không phải tất cả các công thức mảng đều hoạt động. Ví dụ: phần sau sẽ tạo ra lỗi nếu có bất kỳ điều gì ngoài các số trong dải dữ liệu:

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

Để đảm bảo bạn không gặp lỗi, bạn cần thực hiện một số kiểm tra trong công thức:

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

Một lần nữa, hãy nhớ rằng đây là một công thức mảng, vì vậy bạn cần nhập nó bằng cách sử dụng Shift + Ctrl + Enter.

Nếu muốn, bạn có thể tạo một hàm do người dùng định nghĩa sẽ trả về giá trị mong muốn:

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

Để sử dụng macro này, chỉ cần sử dụng như sau với một ô trong trang tính của bạn:

=MinEven(A1:A100)

Nếu không có số chẵn nào trong phạm vi, hàm sẽ trả về lỗi #Num.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (119) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: