Là do bạn gõ hàm không chính xác. Với cú pháp bạn gõ như trong file thì kết quả excel trả về 3 là đúng rồi.
Bạn lưu ý: trong excel những ký tự >, <, ?, * là các kí tự rất đặc biệt.
Trong công thức
=COUNTIF(D2':'D9,"<0.5M") tức =COUNTIF({"<0.5M";"<0.5M";">10M";"3M - 4.5M";"4.5M - 6M";"4.5M - 6M";"6M - 10M";"6M - 10M"},"=<0.5M")
Trong vùng D2':'D9, excel sẽ hiểu các dấu "<" và ">" đơn giản là 1 phần của chuỗi. Bởi nó là 1 phần dữ liệu trong các ô.
Tuy nhiên với điều kiện, Excel sẽ hiểu dấu "<" trong "<0.5M" là đếm số lượng chuỗi mà "bé hơn" chuỗi "0.54M" thay vì xem "<" là 1 phần của chuỗi kí tự.
Như vậy với yêu cầu của bạn là đếm số lượng chuỗi "<0.5M" thì buộc bản phải "làm sao đấy" để excel hiểu rằng dấu "<" ở đây "không có gì đặc biệt"
Tức là hàm phải trở thành
=COUNTIF(D2':'D9,"=<0.5M")
(Bạn chú ý: dấu "=" trước dấu "<" sẽ giúp dấu "<" trở nên "bình thường", nếu đặt sau thì excel lại hiểu là "<=" tức nhỏ hơn hoặc bằng)
Hoặc "an toàn" hơn
=SUMPRODUCT(--((D2':'D9)="<0.5M"))
Về phần 2 kí tự "*" và "?" anh Hiệp đã giải thích rõ rồi. Mình chỉ thêm vài ví dụ để bạn dễ hiểu
wh*: tất cả các chuỗi bắt đầu bằng "wh", sau "wh" có thể bất kỳ kí tự gì với bất kể số lượng nào: who, whom, which, what
*is: tất cả các chuỗi kết thúc bằng "is", trước "is" có thể bất kỳ kí tự gì với bất kể số lượng nào: is, miss, this
*i*: tất cả chuỗi có "i": trước vào sau "i" có thể là bất kỳ kí tự gì với bất kể số lượng nào: which, kick
Ký tự "?": Hiểu tương tự như trên nhưng chỉ là đại diện cho 1 ký tự duy nhất.
Vậy câu hỏi đặt ra: dấu "*" đặc biệt như vậy, vậy nếu thực sự muốn tìm ký tự "*" theo "đúng nghĩa" thì sao?
Trả lời: cho excel hiểu "*" là 1 ký tự bình thường bằng cách thêm dấu "~" phía trước.
Ví dụ: tìm kí tự "* trong chuỗi: abc
Hàm: search("*","abc") cho kết quả là 1. Vì dấu "*" ở đây mang ý nghĩa đặc biệt, excel hiểu là bạn đang search ký tự bất kỳ, với số lượng bất kỳ
Search("~*","abc") báo lỗi không tìm thấy. Vì lúc này dấu "*" đã được "bình thường hóa". Và trong chuỗi "abc" không có ký tự nào là "*"
Những dấu: "*", "?" gọi là wildcard. Dấu "~" là escape. Vậy thì escape của "~" là "~~"
Dấu nháy kép (") nếu cần tìm kiếm thì vẫn như thường lệ, cho vào "
"". Tuy nhiên người viết hàm/code thường né tránh viết kiểu vậy để tránh "end-user" rối mắt, mà thay bằng char(34).
Hi vọng những thông tin có chút ít hữu ích với bạn

P/S: Dấu ":" và chữ "D" cạnh nhau sẽ thành icon, vì vậy mình có né chút xíu bằng ':' trong D2':'D9