Mục lục
Hướng dẫn giải thích cách làm cho hàm VLOOKUP phân biệt chữ hoa chữ thường trong Excel, trình bày một số công thức khác phân biệt chữ hoa chữ thường và chỉ ra điểm mạnh cũng như hạn chế của từng hàm.
Tôi đoán là mọi Người dùng Excel biết chức năng nào thực hiện tra cứu dọc trong Excel. Phải, đó là VLOOKUP. Tuy nhiên, rất ít người biết rằng VLOOKUP của Excel không phân biệt chữ hoa chữ thường, nghĩa là nó coi chữ thường và chữ HOA là các ký tự giống nhau.
Dưới đây là một ví dụ nhanh chứng minh VLOOKUP không thể phân biệt chữ hoa chữ thường. Giả sử nếu bạn có "hóa đơn" trong ô A2 và "Bill" trong A4. Công thức dưới đây sẽ bắt "hóa đơn" vì nó xuất hiện đầu tiên trong mảng tra cứu và trả về giá trị khớp từ B2.
=VLOOKUP("Bill", A2:B4, 2, FALSE)
Tìm hiểu thêm trong phần này Trong bài viết này, tôi sẽ chỉ cho bạn cách làm cho VLOOKUP phân biệt chữ hoa chữ thường. Chúng ta cũng sẽ khám phá một vài hàm khác có thể khớp phân biệt chữ hoa chữ thường trong Excel.
Công thức VLOOKUP phân biệt chữ hoa chữ thường
Như đã đề cập ở trên, một công thức VLOOKUP thông thường không nhận ra trường hợp chữ cái. Tuy nhiên, có một cách để làm cho hàm VLOOKUP của Excel phân biệt chữ hoa chữ thường, như minh họa trong ví dụ bên dưới.
Giả sử bạn có ID mặt hàng trong cột A và muốn lấy giá và nhận xét của mặt hàng đó từ cột B và C. Vấn đề là ID bao gồm cả ký tự chữ thường và chữ hoa. Ví dụ: các giá trị trong A4 (001Tvci3u) và A5 (001Tvci3U) chỉ khác nhau ởký tự cuối cùng, tương ứng là "u" và "U".
Khi tra cứu "001Tvci3 U ", công thức VLOOKUP tiêu chuẩn cho ra kết quả $90 được liên kết với "001Tvci3 u " vì nó xuất hiện trước "001Tvci3 U " trong mảng tra cứu. Nhưng đây không phải là điều bạn muốn, phải không?
=VLOOKUP(F2, A2:C7, 2, FALSE)
Để thực hiện tra cứu phân biệt chữ hoa chữ thường trong Excel, chúng tôi kết hợp VLOOKUP, CHOOSE và EXACT các hàm:
VLOOKUP(TRUE, CHOOSE({1,2}, EXACT( lookup_value, lookup_array), return_array), 2, 0)Công thức chung này hoạt động hoàn hảo trong mọi tình huống. Bạn thậm chí có thể tra cứu từ phải sang trái , điều mà công thức VLOOKUP thông thường không thể thực hiện được. Xin cảm ơn Pouriya vì đã đề xuất giải pháp đơn giản và tao nhã này!
Trong trường hợp của chúng tôi, các công thức thực sự diễn ra như sau.
Để kéo giá ở F3:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), B2:B7), 2, FALSE)
Để lấy nhận xét F4:
=VLOOKUP(TRUE, CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7), 2, FALSE)
Lưu ý. Trong tất cả các phiên bản Excel không phải Excel 365, điều này chỉ hoạt động như một công thức mảng, vì vậy hãy nhớ nhấn Ctrl + Shift + Enter để hoàn thành chính xác. Trong Excel 365, do hỗ trợ mảng động nên nó cũng hoạt động như một công thức thông thường.
Cách thức hoạt động của công thức này:
Phần cốt lõi thực hiện thủ thuật này là công thức CHỌN với CHÍNH XÁC lồng nhau:
CHOOSE({1,2}, EXACT(F2, A2:A7), C2:C7)
Ở đây, hàm EXACT so sánh giá trị trong F2 với từng giá trị trong A2:A7 và trả về TRUE nếu chúng hoàn toàn giống nhau kể cả cách viết hoa chữ thường,FALSE ngược lại:
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}
Đối với đối số index_num của CHOOSE, chúng tôi sử dụng hằng số mảng {1,2}. Kết quả là hàm kết hợp các giá trị logic từ mảng trên và các giá trị từ C2:C7 thành một mảng hai chiều như sau:
{FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}
Hàm VLOOKUP lấy giá trị đó từ đó và tìm kiếm giá trị tra cứu (là TRUE) trong cột đầu tiên của mảng 2 chiều (được biểu thị bằng các giá trị logic) và trả về giá trị khớp từ cột thứ 2, là giá chúng tôi đang tìm kiếm:
VLOOKUP(TRUE, {FALSE,155;FALSE,186;FALSE,90;TRUE,54;FALSE,159;FALSE,28}, 2, 0)
Công thức XLOOKUP phân biệt chữ hoa chữ thường
Người đăng ký Microsoft 365 có thể thực hiện tra cứu phân biệt chữ hoa chữ thường trong Excel thậm chí bằng một công thức đơn giản hơn. Như bạn có thể đoán, tôi đang nói về một phiên bản kế thừa mạnh mẽ hơn của VLOOKUP - hàm XLOOKUP.
Bởi vì XLOOKUP hoạt động trên mảng tra cứu và trả về riêng biệt nên chúng ta không cần thủ thuật mảng hai chiều từ phiên bản trước thí dụ. Chỉ cần sử dụng EXACT cho đối số lookup_array :
XLOOKUP(TRUE, EXACT( lookup_value , lookup_array ), return_array , " Không tìm thấy")Đối số cuối cùng ("Không tìm thấy") là tùy chọn. Nó chỉ xác định giá trị nào sẽ trả về nếu không tìm thấy kết quả khớp. Nếu bạn bỏ qua nó, thì lỗi #N/A tiêu chuẩn sẽ được trả về trong trường hợp công thức không tìm thấy gì.
Đối với bảng mẫu của chúng tôi, đây là những công thức XLOOKUP phân biệt chữ hoa chữ thường để sử dụng.
Để lấy giá trong F3:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), B2:B7, "Not found")
Để trích xuấtbình luận F4:
=XLOOKUP(TRUE, EXACT(F2, A2:A7), C2:C7, "Not found")
Cách thức hoạt động của công thức này:
Giống như trong ví dụ trước, hàm EXACT trả về một mảng các giá trị TRUE và FALSE, trong đó TRUE đại diện cho các kết quả khớp phân biệt chữ hoa chữ thường. XLOOKUP tìm kiếm giá trị TRUE trong mảng trên và trả về giá trị khớp từ return_array . Xin lưu ý rằng nếu có hai hoặc nhiều giá trị hoàn toàn giống nhau trong cột tra cứu (bao gồm cả trường hợp chữ cái), công thức sẽ trả về giá trị khớp tìm thấy đầu tiên.
Giới hạn XLOOKUP : chỉ khả dụng trong Excel 365 và Excel 2021.
TÓM TẮT - tra cứu phân biệt chữ hoa chữ thường để trả về các số khớp
Như bạn đã hiểu từ tiêu đề, TÓM TẮT là một hàm Excel khác có thể thực hiện tra cứu phân biệt chữ hoa chữ thường , nhưng nó chỉ có thể trả về giá trị số . Nếu đây không phải là trường hợp của bạn, thì hãy chuyển sang ví dụ INDEX MATCH cung cấp giải pháp cho tất cả các loại dữ liệu.
Có thể bạn đã biết, TÓM TẮT của Excel nhân các thành phần trong các mảng đã chỉ định và trả về tổng của các tích. Vì chúng tôi muốn tra cứu phân biệt chữ hoa chữ thường, nên chúng tôi sử dụng hàm EXACT để lấy mảng đầu tiên:
=SUMPRODUCT((EXACT(A2:A7,F2) * (B2:B7)))
Rất tiếc, hàm SUMPRODUCT không thể trả về kết quả khớp văn bản do không thể nhân các giá trị văn bản. Trong trường hợp này, bạn sẽ nhận được lỗi #VALUE! lỗi như ở ô F4 trong ảnh chụp màn hình bên dưới:
Cách thức hoạt động của công thức này:
Giống như trong ví dụ VLOOKUP, EXACT kiểm tra chức nănggiá trị trong F2 so với tất cả các giá trị trong A2:A7 và trả về TRUE cho các kết quả khớp phân biệt chữ hoa chữ thường, FALSE nếu không:
SUMPRODUCT(({FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}*{155;186;90;54;159;28}))
Trong hầu hết các công thức, Excel đánh giá TRUE thành 1 và FALSE thành 0 . Vì vậy, khi TÓM TẮT nhân các phần tử của hai mảng ở cùng một vị trí, tất cả các giá trị không khớp (FALSE) sẽ trở thành số không:
SUMPRODUCT({0;0;0;54;0;0})
Kết quả là công thức trả về một số từ cột B tương ứng với đối sánh phân biệt chữ hoa chữ thường chính xác trong cột A.
Giới hạn TÓM TẮT : chỉ có thể trả về giá trị số.
INDEX MATCH - tra cứu phân biệt chữ hoa chữ thường cho tất cả các loại dữ liệu
Cuối cùng, chúng ta sắp có được một công thức tra cứu phân biệt chữ hoa chữ thường không giới hạn hoạt động trong tất cả các phiên bản Excel và trên tất cả các tập dữ liệu.
Ví dụ này xuất hiện sau cùng không chỉ vì cái tốt nhất được để dành cho cái cuối cùng, nhưng cũng bởi vì kiến thức bạn có được trong các ví dụ trước có thể giúp bạn hiểu rõ hơn về công thức MATCH INDEX phân biệt chữ hoa chữ thường.
Sự kết hợp giữa hàm INDEX và MATCH thường được sử dụng trong ví dụ cel như một giải pháp thay thế linh hoạt và linh hoạt hơn cho VLOOKUP. Bài viết sau đây làm tốt công việc (hy vọng là :) giải thích cách hai chức năng này hoạt động cùng nhau - Sử dụng INDEX MATCH thay vì VLOOKUP.
Ở đây, tôi sẽ chỉ nhắc bạn những điểm chính:
- Hàm MATCH tìm kiếm giá trị tra cứu trong mảng tra cứu đã chỉ định và trả về vị trí tương đối của nó.
- Giá trị tương đốivị trí của giá trị tra cứu chuyển trực tiếp đến đối số row_num của hàm INDEX để hướng dẫn hàm này trả về giá trị từ hàng đó.
Để có công thức nhận dạng kiểu chữ, bạn chỉ cần cần thêm một chức năng nữa vào tổ hợp INDEX MATCH cổ điển. Rõ ràng là bạn cần lại hàm EXACT:
INDEX( return_array , MATCH(TRUE, EXACT( lookup_value , lookup_array ), 0))Công thức thực sự trong F3 là:
=INDEX(B2:B7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Trong F4, chúng tôi đang sử dụng công thức này:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Hãy nhớ rằng nó chỉ hoạt động như một công thức mảng trong tất cả các phiên bản khác ngoài Excel 365, vì vậy hãy đảm bảo nhập công thức đó bằng cách nhấn đồng thời các phím Ctrl + Shift + Enter. Nếu thực hiện đúng, công thức sẽ được đặt trong dấu ngoặc nhọn như minh họa trong ảnh chụp màn hình bên dưới:
Cách thức hoạt động của công thức này:
Giống như trong tất cả các ví dụ trước, EXACT trả về TRUE cho mỗi giá trị trong A2:A7 khớp chính xác với giá trị trong F2. Vì chúng tôi sử dụng TRUE cho lookup_value của MATCH, nên nó trả về vị trí tương đối của đối sánh chính xác có phân biệt chữ hoa chữ thường, đó chính là vị trí mà INDEX cần để trả về đối sánh từ B2:B7.
Công thức tra cứu phân biệt chữ hoa chữ thường nâng cao
Công thức INDEX MATCH nêu trên có vẻ hoàn hảo, phải không? Nhưng thực tế thì không phải vậy. Để tôi chỉ cho bạn lý do.
Giả sử một ô trong cột trả về tương ứng với giá trị tra cứu bị trống. Công thức sẽ trả về cái gì? Không.Và bây giờ, hãy xem kết quả thực sự trả về:
=INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0))
Rất tiếc, công thức trả về số 0! Có thể, nó không thực sự quan trọng khi chỉ xử lý các giá trị văn bản. Tuy nhiên, nếu trang tính của bạn chứa các số và một số trong số đó là các số 0 thực, thì đây là một vấn đề.
Thực tế là tất cả các công thức tra cứu khác đã thảo luận trước đó đều hoạt động theo cùng một cách. Nhưng bây giờ bạn muốn một công thức hoàn hảo phải không?
Để làm cho công thức INDEX MATCH phân biệt chữ hoa chữ thường hoàn toàn hoàn hảo, bạn đưa nó vào hàm IF để kiểm tra xem ô trả về có trống không và không trả về gì trong trường hợp này:
=IF(INDIRECT("C"&(1+MATCH(TRUE,EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "")
Trong công thức trên:
- "C" là cột trả về.
- "1" là số biến vị trí tương đối của ô được hàm MATCH trả về thành địa chỉ ô thực .
Ví dụ: mảng tra cứu trong hàm MATCH của chúng ta là A2:A7, nghĩa là vị trí tương đối của ô A2 là "1", vì đây là ô đầu tiên trong mảng. Nhưng trong thực tế, mảng tra cứu bắt đầu ở hàng 2. Để bù cho sự khác biệt, chúng tôi thêm 1, vì vậy, hàm INDIRECT sẽ trả về một giá trị từ ô bên phải.
Các ảnh chụp màn hình bên dưới minh họa INDEX phân biệt chữ hoa chữ thường được cải thiện Công thức MATCH đang hoạt động.
Nếu ô trả về trống, công thức sẽ không xuất ra gì (một chuỗi trống):
Nếu ô trả về chứa số 0 , công thức trả về 0:
Nếu bạn muốnhiển thị một số thông báo khi ô trả về trống, hãy thay thế một chuỗi trống ("") trong đối số cuối cùng của IF bằng một số văn bản:
=IF(INDIRECT("C"&(1+MATCH(TRUE, EXACT(A2:A7, F2), 0)))"", INDEX(C2:C7, MATCH(TRUE, EXACT(A2:A7, F2), 0)), "There is nothing to return, sorry.")
Thực hiện VLOOKUP phân biệt chữ hoa chữ thường một cách dễ dàng
Người dùng Ultimate Suite dành cho Excel của chúng tôi có một công cụ đặc biệt giúp việc tra cứu trong các bảng lớn và phức tạp trở nên dễ dàng và không bị căng thẳng. Điều tuyệt vời nhất là Hợp nhất hai bảng có tùy chọn phân biệt chữ hoa chữ thường và ví dụ dưới đây cho thấy nó đang hoạt động.
Giả sử bạn muốn kéo Qty. từ bảng Tra cứu sang bảng Chính dựa trên ID mặt hàng duy nhất:
Việc bạn làm là chạy Bảng hợp nhất trình hướng dẫn và thực hiện các bước sau:
- Chọn bảng chính để kéo dữ liệu mới vào.
- Chọn bảng tra cứu để tìm dữ liệu mới.
- Chọn một hoặc nhiều cột chính (ID mặt hàng trong trường hợp của chúng tôi). Và nhớ chọn hộp Kết hợp phân biệt chữ hoa chữ thường .
Một lúc sau, bạn sẽ nhận được kết quả mong muốn :)
Đó là cách tra cứu trong Excel có tính đến trường hợp văn bản. Tôi cảm ơn bạn đã đọc và hy vọng sẽ gặp bạn trên blog của chúng tôi vào tuần tới!
Sách bài tập thực hành để tải xuống
Ví dụ VLOOKUP phân biệt chữ hoa chữ thường (tệp .xlsx)