HÀM VLOOKUP

Liên hệ QC
VLOOKUP

Hàm VLOOKUP sẽ dò tìm một hàng (Row) chứa giá trị mà bạn cần tìm ở cột đầu tiên (bên trái) của một bảng dữ liệu (chữ V trong VLOOKUP có nghĩa là Vertical), nếu tìm thấy, nó sẽ tìm tiếp trong hàng này, và sẽ lấy giá trị ở cột mà bạn đã chỉ định trước.

Cú pháp: =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

lookup_value
: Giá trị dùng để tìm kiếm trong cột đầu tiên của table_array, giá trị này có thể là một số, một chuỗi, hoặc là một tham chiếu

table_array: Bảng dùng để dò tìm, có thể là một vùng tham chiếu hoặc là tên (Name) của một vùng đã được đặt tên

col_index_num: Số thứ tự của các cột trong table_array, chứa kết quả mà bạn muốn tìm kiếm. col_index_num: Số thứ tự này được tính từ trái sang phải (cột chứa lookup_value là cột thứ nhất)

range_lookup: Là một giá trị kiểu Boolean, để chỉ kiểu tìm kiếm: chính xác hay tương đối.
• TRUE (hoặc 1 là mặc định): Là kiểu dò tìm tương đối VLOOKUP sẽ tìm giá trị lookup_value đầu tiên mà nó tìm được trong cột đầu tiên của table_array. Trong trường hợp không tìm ra, nó sẽ trả về giá trị lớn nhất mà nhỏ hơn lookup_value
• FALSE (hoặc 0): Là kiểu dò tìm chính xác VLOOKUP sẽ tìm chính xác giá trị lookup_value trong cột đầu tiên của table_array. Trong trường hợp không có, hoặc lookup_value nhỏ hơn giá trị nhỏ nhất trong cột đầu tiên của table_array, nó sẽ báo lỗi #N/A!

Lưu ý:
• Để có kết quả chính xác khi range_lookup = TRUE, bạn phải sắp xếp các giá trị các giá trị trong cột đầu tiên của table_array từ nhỏ đến lớn.
• Nếu cột đầu tiên của table_array chứa các giá trị kiểu Text, bạn có thể dùng các ký tự đại diện cho lookup_value (dấu * đại diện cho nhiều ký tự / hoặc dấu ? đại diện cho một ký tự)
• Nếu lookup_value nhỏ hơn giá trị nhỏ nhất trong cột đầu tiên của table_array, hàm sẽ báo lỗi #N/A!
• Lỗi này thường gặp khi bạn gõ dư một khoảng trắng ở cuối lookup_value
• Nếu không tìm thấy lookup_value khi range_lookup = FALSE, hàm sẽ báo lỗi #N/A!
• Nếu col_index_num nhỏ hơn 1, hàm sẽ báo lỗi #VALUE!, còn nếu col_index_num lớn hơn số cột trong table_array, hàm sẽ báo lỗi #REF!

Ví dụ:
1574388625420.png
 

File đính kèm

  • VLOOKUP.xlsx
    9.3 KB · Đọc: 870
Thay số 1 thì nó ra kết quả nhưng ko chính xác bác à, lúc đó H7 đúng bằng 1 nhưng H8 sai (=3). Có điều lạ là khi mở ở chế độ Protect View thì kết quả tất cả đêu đúng. (Hoặc mở trên trang tính của điện thoại Android thì bình thường.
Bảng tính không thể nói chuyện chế độ, điện thoại hay máy tính gì cả. Công thức đúng thì phải ra đúng kết quả.
Chỉ là bạn không biết số 1 và 0 khác nhau ra sao thôi?
 
VLOOKUP

Hàm VLOOKUP sẽ dò tìm một hàng (Row) chứa giá trị mà bạn cần tìm ở cột đầu tiên (bên trái) của một bảng dữ liệu (chữ V trong VLOOKUP có nghĩa là Vertical), nếu tìm thấy, nó sẽ tìm tiếp trong hàng này, và sẽ lấy giá trị ở cột mà bạn đã chỉ định trước.

Cú pháp: =VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

lookup_value
: Giá trị dùng để tìm kiếm trong cột đầu tiên của table_array, giá trị này có thể là một số, một chuỗi, hoặc là một tham chiếu

table_array: Bảng dùng để dò tìm, có thể là một vùng tham chiếu hoặc là tên (Name) của một vùng đã được đặt tên

col_index_num: Số thứ tự của các cột trong table_array, chứa kết quả mà bạn muốn tìm kiếm. col_index_num: Số thứ tự này được tính từ trái sang phải (cột chứa lookup_value là cột thứ nhất)

range_lookup: Là một giá trị kiểu Boolean, để chỉ kiểu tìm kiếm: chính xác hay tương đối.
• TRUE (hoặc 1 là mặc định): Là kiểu dò tìm tương đối VLOOKUP sẽ tìm giá trị lookup_value đầu tiên mà nó tìm được trong cột đầu tiên của table_array. Trong trường hợp không tìm ra, nó sẽ trả về giá trị lớn nhất mà nhỏ hơn lookup_value
• FALSE (hoặc 0): Là kiểu dò tìm chính xác VLOOKUP sẽ tìm chính xác giá trị lookup_value trong cột đầu tiên của table_array. Trong trường hợp không có, hoặc lookup_value nhỏ hơn giá trị nhỏ nhất trong cột đầu tiên của table_array, nó sẽ báo lỗi #N/A!

Lưu ý:
• Để có kết quả chính xác khi range_lookup = TRUE, bạn phải sắp xếp các giá trị các giá trị trong cột đầu tiên của table_array từ nhỏ đến lớn.
• Nếu cột đầu tiên của table_array chứa các giá trị kiểu Text, bạn có thể dùng các ký tự đại diện cho lookup_value (dấu * đại diện cho nhiều ký tự / hoặc dấu ? đại diện cho một ký tự)
• Nếu lookup_value nhỏ hơn giá trị nhỏ nhất trong cột đầu tiên của table_array, hàm sẽ báo lỗi #N/A!
• Lỗi này thường gặp khi bạn gõ dư một khoảng trắng ở cuối lookup_value
• Nếu không tìm thấy lookup_value khi range_lookup = FALSE, hàm sẽ báo lỗi #N/A!
• Nếu col_index_num nhỏ hơn 1, hàm sẽ báo lỗi #VALUE!, còn nếu col_index_num lớn hơn số cột trong table_array, hàm sẽ báo lỗi #REF!

Ví dụ:
View attachment 228782
Sao không hướng dẫn đổi số thứ tự cột sang hàm động để dễ xử lý khi dò tìm nhiều cột, chứ thay đổi thủ công sẽ mất thời gian sau này khi muốn thay đổi cột cần lấy kết quả,
 
Sao không hướng dẫn đổi số thứ tự cột sang hàm động để dễ xử lý khi dò tìm nhiều cột, chứ thay đổi thủ công sẽ mất thời gian sau này khi muốn thay đổi cột cần lấy kết quả,
Bạn nhìn sai vấn đề rồi. VLookup chủ yếu là tĩnh. Cái đối số thứ hai của nó, "table_array", chủ yếu là một bảng tĩnh.
Việc đối số hứ ba, "col_index_num" cần uyển chuyển hay không nằm trong thủ thuật cải tiến.

Nếu cần công thức có nhiều tính chất động thì nên dùng cách khác tốt hơn Lookup, Index/Match, ... Đặc biệt Offset thì rất động.
 
Bảng tính không thể nói chuyện chế độ, điện thoại hay máy tính gì cả. Công thức đúng thì phải ra đúng kết quả.
Chỉ là bạn không biết số 1 và 0 khác nhau ra sao thôi?
Em chỉ hiểu là 0 phải tìm đúng giá trị, mà so sánh thì bên table_array vẫn có giá trị đúng để so sánh. Ảnh chụp khi em mở file trên điện thoại đây ạ. Và nếu có thể bác sửa giúp em để không báo lỗi được ko ạ?
 

File đính kèm

  • _20201202_105527.JPG
    _20201202_105527.JPG
    55.2 KB · Đọc: 205
Em chỉ hiểu là 0 phải tìm đúng giá trị, mà so sánh thì bên table_array vẫn có giá trị đúng để so sánh. ...
"phải tìm đúng giá trị" chỉ là 1/2 của cái khác giữa 0 và 1. Điểm khác còn lại quan trọng hơn. Và đó là lý da tại sao bạn bị sai.
Chú: nếu không hiểu rõ điều kiện của 1 thì luôn luôn dùng 0. Đừng bao giờ dùng 1, vì kết quả sẽ sai.
 
Tuy nhiên tôi đổ lỗi cho hàm MROUND. Nhớ mang máng có đọc ở đâu đấy về vấn đề với hàm này.
Tôi cũng nghi vì nếu nhậ̣p tay, hoặc trong trường hợp cụ̣ thể này thì dùng ROUND, thì kết quả đúng.
(... Bác có rảnh thì tìm thử)
"Cái này" không phải đam mê, cũng không phải công việc, nên tôi không ham. :D
 
Em có file này, 2 giá trị giống hệt nhau nhưng tìm lại không ra, nhờ mọi người giúp đỡ
 

File đính kèm

  • Book1.xlsx
    9.8 KB · Đọc: 191
Em có file này, 2 giá trị giống hệt nhau nhưng tìm lại không ra, nhờ mọi người giúp đỡ
A1 và D1 không như nhau. A1 chứa ký tự unicode dựng sẵn (Len(A1) = 18), còn D1 chứa ký tự unicode tổ hợp (Len(D1) = 19)..

1.
Nhìn hình

excel.jpg


sẽ thấy "ả" trong A1 là ký tự unicode dựng sẵn có điểm mã là 7843 (thập phân) = 1EA3 (hex). Ký tự đó có tên là Latin Small Letter A with Hook Above

kytuahoi.jpg


"ả" trong D1 là tổ hợp - sự ghép 2 ký tự unicode: ký tự "a" (có tên là Latin Small Letter A) có điểm mã là 97 (thập phân) = 0061 (hex) và ký tự dấu hỏi (có tên là Combining Hook Above) có điểm mã là 777 (thập phân) = 0309 (hex)

kytua.jpg

dau hoi.jpg


2. Hãy copy A1 và dán vào D1 (lúc này A1 và D1 y hệt như nhau) thì sẽ thấy D2 có kết quả đẹp.
 
A1 và D1 không như nhau. A1 chứa ký tự unicode dựng sẵn (Len(A1) = 18), còn D1 chứa ký tự unicode tổ hợp (Len(D1) = 19)..

1.
Nhìn hình

View attachment 252947

sẽ thấy "ả" trong A1 là ký tự unicode dựng sẵn có điểm mã là 7843 (thập phân) = 1EA3 (hex). Ký tự đó có tên là Latin Small Letter A with Hook Above

View attachment 252944

"ả" trong D1 là tổ hợp - sự ghép 2 ký tự unicode: ký tự "a" (có tên là Latin Small Letter A) có điểm mã là 97 (thập phân) = 0061 (hex) và ký tự dấu hỏi (có tên là Combining Hook Above) có điểm mã là 777 (thập phân) = 0309 (hex)

View attachment 252945
View attachment 252946

2. Hãy copy A1 và dán vào D1 (lúc này A1 và D1 y hệt như nhau) thì sẽ thấy D2 có kết quả đẹp.
Với trường hợp này thì lỗi xuất phát từ đâu và xử lý sao cho nhanh anh nhỉ, chứ copy từng giá trị thì quá lâu. Mà cho em hỏi là em có dùng hàm If để so sánh 2 ô này và nó cho giá trị bằng nhau, vậy nhờ anh giải thích rõ hơn về cách hoạt động của hàm if trong trường hợp này./
 
Với trường hợp này thì lỗi xuất phát từ đâu và xử lý sao cho nhanh anh nhỉ, chứ copy từng giá trị thì quá lâu. Mà cho em hỏi là em có dùng hàm If để so sánh 2 ô này và nó cho giá trị bằng nhau, vậy nhờ anh giải thích rõ hơn về cách hoạt động của hàm if trong trường hợp này./
Tôi ghi rõ nguyên nhân

A1 và D1 không như nhau
...
2. Hãy copy A1 và dán vào D1 (lúc này A1 và D1 y hệt như nhau) thì sẽ thấy D2 có kết quả đẹp.

mà bạn còn hỏi cách khắc phục sao? Chịu khó suy nghĩ chút là ra thôi.

Nguyên nhân 2 chuỗi khác nhau dù mắt và IF "nhìn" như nhau là do 1 chuỗi chứa unicode dựng sẵn còn chuỗi kia chứa unicode tổ hợp. Độ lớn của chúng cũng khác nhau - một chuỗi 18 ký tự còn chuỗi kia có 19 ký tự. Vậy thì cách chữa là đưa chúng cùng về dựng sẵn hoặc cùng về tổ hợp. Thế thôi.

Cách chữa:
1. Đưa về cùng 1 loại unicode. Tôi đề nghị đưa về unicode dựng sẵn. Hãy dùng các công cụ sẵn có, có thể là Unikey (???), để chuyển dữ liệu nguồn (những chỗ như A1) về unicode dựng sẵn.

2. Ở những chỗ như D1 phải gõ unicode DỰNG SẴN. Nếu dùng Unikey thì phải chọn Bảng mã = Unicode (tức dựng sẵn), không chọn Bảng mã = Unicode tổ hợp (tức tổ hợp). Khi dữ liệu nguồn và dữ liệu cần kiểm tra cùng loại thì sẽ không có lỗi.

unikey.jpg
 
Lần chỉnh sửa cuối:
Tôi ghi rõ nguyên nhân



mà bạn còn hỏi cách khắc phục sao? Chịu khó suy nghĩ chút là ra thôi.

Nguyên nhân 2 chuỗi khác nhau dù mắt và IF "nhìn" như nhau là do 1 chuỗi chứa unicode dựng sẵn còn chuỗi kia chứa unicode tổ hợp. Độ lớn của chúng cũng khác nhau - một chuỗi 18 ký tự còn chuỗi kia có 19 ký tự. Vậy thì cách chữa là đưa chúng cùng về dựng sẵn hoặc cùng về tổ hợp. Thế thôi.

Cách chữa:
1. Đưa về cùng 1 loại unicode. Tôi đề nghị đưa về unicode dựng sẵn. Hãy dùng các công cụ sẵn có, có thể là Unikey (???), để chuyển dữ liệu nguồn (những chỗ như A1) về unicode dựng sẵn.

2. Ở những chỗ như D1 phải gõ unicode DỰNG SẴN. Nếu dùng Unikey thì phải chọn Bảng mã = Unicode (tức dựng sẵn), không chọn Bảng mã = Unicode tổ hợp (tức tổ hợp). Khi dữ liệu nguồn và dữ liệu cần kiểm tra cùng loại thì sẽ không có lỗi.

View attachment 253026
Em đã giải quyết được với Unikey toolkit như anh hướng dẫn, để Bảng mã nguồn và đích đều là Unicode, nếu nguồn là Unicode tổ hợp sẽ chuyển về Unicode dựng sẵn.
 

File đính kèm

  • Capture.JPG
    Capture.JPG
    34.3 KB · Đọc: 190
Chào mọi người.
Tôi không rành về exel nên xin phép trình bày hơi dài dòng một chút. Nhóm tôi làm việc phỏng vấn bằng đt. Để giảm chi phí (tận dụng miễn phí cuộc gọi nội mạng), chúng tôi muốn từ một danh sách tổng thể tách ra thành 3 danh sách dựa trên đầu số điện thoại của ba nhà mạng Viettel, Vina, Mobi. Nếu dùng hàm Vlookup thì cách làm (từng bước) như thế nào? Ai biết xin chỉ giúp.
Tôi xin chân thành cảm ơn.
 
Lần chỉnh sửa cuối:
Chào mọi người.
Tôi không rành về exel nên xin phép trình bày hơi dài dòng một chút. Nhóm tôi làm việc phỏng vấn bằng đt. Để giảm chi phí (tận dụng miễn phí cuộc gọi nội mạng), chúng tôi muốn từ một danh sách tổng thể tách ra thành 3 danh sách dựa trên đầu số điện thoại của ba nhà mạng Viettel, Vina, Mobi. Nếu dùng hàm Vlookup thì cách làm (từng bước) như thế nào? Ai biết xin chỉ giúp.
Tôi xin chân thành cảm ơn.
Bước 1. bạn xác định 3 số đầu của mỗi nhà mạng, cái này cũng hên xui vì một số đã đổi mạng giữ số rồi.
Bước 2. lập một bảng phụ gồm 3 dòng và 2 cột kiểu như cột A là 3 số đầu, cột B là Mạng điện thoại
Bước 3. bạn Vlookup 3 số đầu trong dãy số kia, tham chiếu đến cái bảng phụ vừa rồi là ra.
 
Úi dồi, 21 đầu số chứ đâu có ít.
 

File đính kèm

  • Vlookup dau so.xlsx
    10.1 KB · Đọc: 141
Bước 1. bạn xác định 3 số đầu của mỗi nhà mạng, cái này cũng hên xui vì một số đã đổi mạng giữ số rồi.
Bước 2. lập một bảng phụ gồm 3 dòng và 2 cột kiểu như cột A là 3 số đầu, cột B là Mạng điện thoại
Bước 3. bạn Vlookup 3 số đầu trong dãy số kia, tham chiếu đến cái bảng phụ vừa rồi là ra.
Cảm ơn bạn đã hướng dẫn chi tiết.
 
Xin cho hỏi,
Mình muốn tìm dữ liệu trùng nhau giữa 2 sheet, nên dùng vlookup mà bị thông báo như này.
Làm sao để mình tìm được những dữ liệu trùng nhau giữa 2 sheet ạ?
1634712352421.png
 
Web KT
Back
Top Bottom