Nếu bạn đang sử dụng Excel để phân tích một nhóm ô chứa văn bản, bạn có thể muốn xác định số ô chứa chữ hoa, số chứa chữ thường và số có chứa chữ hoa / thường.

Có hai cách bạn có thể tiếp cận tác vụ này: Sử dụng công thức trang tính thông thường hoặc xác định hàm do người dùng xác định của riêng bạn.

Nếu văn bản bạn muốn đánh giá nằm trong cột A, bắt đầu từ ô A1, bạn có thể sử dụng công thức sau trong ô B1:

=IF(A1>"",IF(EXACT(UPPER(A1),A1),"Upper", IF(EXACT(LOWER(A1),A1),"Lower","Mixed")),"")

Công thức kiểm tra xem có bất kỳ thứ gì trong A1 không. Nếu có, thì nó sử dụng hàm EXACT để so sánh nội dung với các chuyển đổi khác nhau của nội dung ô. Công thức trả về một chuỗi trống nếu ô A1 trống hoặc các từ Trên, Dưới hoặc Hỗn hợp.

Sao chép công thức xuống cột B nếu bạn cần và sau đó bạn có thể sử dụng loại công thức sau để xác định số lượng:

=COUNTIF(B:B,"Upper")

Để tìm số ô viết thường hoặc viết hoa hỗn hợp, hãy thay thế “Trên” bằng “Dưới” hoặc “Hỗn hợp”.

Rõ ràng, sử dụng công thức theo cách này liên quan đến việc thêm một cột vào trang tính của bạn. Có một cách tiếp cận công thức khác mà bạn có thể sử dụng mà không liên quan đến việc sử dụng cột trung gian theo cách này.

Hãy xem xét công thức sau, trả về số ô trong phạm vi A1: A100 chỉ chứa các chữ cái hoa:

=SUMPRODUCT(--(EXACT(A1:A100,UPPER(A1:A100))),--(A1:A100<>""))

Một biến thể trên công thức này có thể được sử dụng để trả về số ô chữ thường. Điều duy nhất được thay đổi sau đây là việc sử dụng hàm LOWER thay vì hàm UPPER:

=SUMPRODUCT(--(EXACT(A1:A100,LOWER(A1:A100))),--(A1:A100<>""))

Để xác định các ô chứa trường hợp hỗn hợp, bạn cần đưa ra kết hợp của hai công thức dựa trên SUMPRODUCT:

=SUMPRODUCT(--(NOT(EXACT(A1:A100,UPPER(A1:A100)))),-- (NOT(EXACT(A1:A100,LOWER(A1:A100)))),--(A1:A100<>""))

Có một số hạn chế đối với các công thức này, nhược điểm không thấy rõ trong các công thức trước đó. Đầu tiên, nếu một ô chứa giá trị số, thì các công thức này sẽ tính ô đó là chữ hoa. Thứ hai, nếu một ô chứa giá trị lỗi, thì công thức trả về lỗi.

Nếu bạn có nhu cầu đếm chữ hoa thường xuyên, thì có lẽ bạn sẽ được phục vụ tốt hơn bằng cách tạo một hàm do người dùng định nghĩa để thực hiện việc đếm cho bạn. Có nhiều cách để viết một hàm như vậy, nhưng hướng dẫn chung là như sau:

Bước qua từng ô của một phạm vi Xác định xem ô đó là chữ hoa, chữ thường hay hỗn hợp Tăng một số bộ đếm Trả về giá trị

Macro sau đây là một ví dụ về cách thực hiện ở trên:

Function CountCase(rng As Range, sCase As String) As Long     Dim vValue     Dim lUpper As Long     Dim lMixed As Long     Dim lLower As Long     Dim rCell As Range     lUpper = 0     lLower = 0     lMixed = 0

For Each rCell In rng         If Not IsError(rCell.Value) Then             vValue = rCell.Value             If VarType(vValue) = vbString _                 And Trim(vValue) <> "" Then                 If vValue = UCase(vValue) Then                     lUpper = lUpper + 1                 ElseIf vValue = LCase(vValue) Then                     lLower = lLower + 1                 Else                     lMixed = lMixed + 1                 End If             End If         End If     Next     Select Case UCase(sCase)

Case "U"

CountCase = lUpper         Case "L"

CountCase = lLower         Case "M"

CountCase = lMixed         Case Else             CountCase = CVErr(xlErrValue)

End Select End Function

Việc xác định xem một ô là chữ hoa, chữ thường hay chữ hoa hỗn hợp rõ ràng là mấu chốt của một macro như thế này. Việc xác định như vậy sử dụng quy trình tương tự như được thực hiện trong công thức trang tính: so sánh nội dung của ô với chuyển đổi chữ hoa hoặc chữ thường của các nội dung đó. Trong macro này, giá trị của ô (vValue) được so sánh với vValue được biến đổi bằng hàm UCase hoặc LCase.

Hàm cũng bỏ qua các ô mà nó không có ý nghĩa để đánh giá.

Nó bỏ qua các ô chứa giá trị số, giá trị Boolean, giá trị lỗi, ô trống và ô chỉ chứa khoảng trắng. Nếu một giá trị số được định dạng dưới dạng văn bản, thì hàm đếm ô đó là chữ hoa. Để sử dụng hàm do người dùng định nghĩa này, hãy sử dụng công thức như sau trong trang tính của bạn:

=COUNTCASE(A1:A100, "L")

Đối với đối số đầu tiên, bạn sử dụng phạm vi bạn muốn đánh giá. Đối số thứ hai là một ký tự duy nhất — L, M hoặc U — cho biết bạn muốn trả về số lượng nào. Nếu bạn sử dụng một số giá trị khác cho đối số thứ hai, thì hàm trả về một lỗi.

_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 (3212) á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: