Bàn về Hàm Xlookup: so sánh các hàm dò tìm & phương pháp dò tìm (1 người xem)

  • Thread starter Thread starter kbw1
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

kbw1

Thành viên tích cực
Tham gia
8/11/13
Bài viết
880
Được thích
231
Từ ngày có hàm này em bỏ luôn Vlookup, cũng thay thế luôn khi dùng index và match.
 
Với dữ liệu nhiều vlookup vẫn là vua về tốc độ tính toán, bỏ quyên hay học thêm vlookup các dạng nâng cao ..
 
Tôi không nghĩ đến việc dùng hàm này sẽ dẫn đến vứt bỏ hàm kia. Tùy tình huống tôi sẽ chọn hàm phù hợp. Tất nhiên có tình huống vẫn có thể chọn 1 trong 2, 3 hàm (hoặc công thức), lúc này tôi chọn hàm cho công thức đơn giản hơn.
Và tôi cũng không cực đoan đến mức không dùng cái mới vì cái cũ đã và đang xài tốt.
- Nếu phải nâng cao Vlookup bằng hàm phụ trợ để dò tìm từ phải qua trái, tại sao không dùng tính năng có sẵn của hàm mới là XLookup?
- Nếu dò tìm tương đối bằng Vlookup, bắt buộc dữ liệu phải được sort sẵn, tại sao không dùng Xlookup không cần sort?
- Ngược lại, trong môi trường công sở (phải chuyển giao qua lại các file excel), sao lại khăng khăng dùng Xlookup trong khi đa số máy tính trong công ty không có hàm này?

Có mới bỏ cũ, hoặc khăng khăng xài cái cũ, đó là 2 cực đoan trái chiều không hồi kết, mà cực đoan là xấu hay là tốt, phải tự cảm nhận khi thất bại, chứ người khác nói thì không tin.
 
Với dữ liệu nhiều vlookup vẫn là vua về tốc độ tính toán, ...
Chứng minh?
Tôi chưa từng đọc qua tài liệu nào nói VLookup là vua về tốc độ tính toán.
Trên thực tế, VLookup gặp dữ lệu nhiều (khoảng 200.000 dòng và 10 cột là bắt đầu té ngữa, phải nhờ Data Model giải cứu)
Nếu dùng cặp Index-Macth thì 100.000 dòng Index, Match cột thứ 10 vẫn chậm nhưng còn tạm chấp nhận được.

Bên trong, code của VLookup phải đưa nguyên một mảng 2 chiều vào một hàm để giải quyết.
Code của Index-Match đưa mảng 1 chiều cho Match, rồi dùng kết quả đưa cho Index để tra mảng cũng 1 chiều.
Code nạp mảng 2 chiều chậm hơn nạp mảng 1 chiều.
Code đổi vị trí phần tử thành dòng+cột cho mảng 2 chiều chậm hơn code trực tiếp tìm phần tử trong mảng 1 chiều, dẫu phải làm 2 lần.
 
Chứng minh?
Tôi chưa từng đọc qua tài liệu nào nói VLookup là vua về tốc độ tính toán.
Trên thực tế, VLookup gặp dữ lệu nhiều (khoảng 200.000 dòng và 10 cột là bắt đầu té ngữa, phải nhờ Data Model giải cứu)
Nếu dùng cặp Index-Macth thì 100.000 dòng Index, Match cột thứ 10 vẫn chậm nhưng còn tạm chấp nhận được.

Bên trong, code của VLookup phải đưa nguyên một mảng 2 chiều vào một hàm để giải quyết.
Code của Index-Match đưa mảng 1 chiều cho Match, rồi dùng kết quả đưa cho Index để tra mảng cũng 1 chiều.
Code nạp mảng 2 chiều chậm hơn nạp mảng 1 chiều.
Code đổi vị trí phần tử thành dòng+cột cho mảng 2 chiều chậm hơn code trực tiếp tìm phần tử trong mảng 1 chiều, dẫu phải làm 2 lần.
1667998648503.pngTốc độ . ☺. .. .♥
 
Bảng của bạn khong nói tên tác giả, không cho biết phương pháp so sánh, và chỉ so sánh với XLookup. Đã so sánh với các hàm khác đâu mà gọi là "vlookup vẫn là vua về tốc độ tính toán".

Hầu hết các dân chuyên bảng tính đều nhìn nhận là VLookup dễ hiểu, dễ dùng, phù hợp với lối suy nghĩ của dân thương mại, kế toán đã quen với các hình thức căn bản của bảng tính trải rộng.
 
Tôi đọc chả hiểu cái bảng này muốn so sánh cái gì. Tìm kiếm hay tính toán? Chỉ số trận đấu, trận đấu offset là gì, có liên quan gì đến 2 hàm cần so sánh? Truy vấn nguồn và hợp nhất các bảng nữa, liên quan gì đến tốc độ Vlookup?
 
Tôi đọc chả hiểu cái bảng này muốn so sánh cái gì. Tìm kiếm hay tính toán? Chỉ số trận đấu, trận đấu offset là gì, có liên quan gì đến 2 hàm cần so sánh? Truy vấn nguồn và hợp nhất các bảng nữa, liên quan gì đến tốc độ Vlookup?
Tra cứu có hai dạng: dạng chính xác và dạng gần đúng.
- Dạng chính xác dùng cách trực tiếp dò mảng/range đầu đến duôi.
- Dạng gần đúng dùng cách dò nhị phân, rất nhanh so với cách dò trên.
Tuy nhiên, để có thể áp dụng thuật toán nhị phân, bảng dò phải được sắp xếp.

Cái bảng so sánh ở bài #7 hình như lấy dữ liệu của bài này:
https://www .ablebits. com/office-addins-blog/vlookup-excel-fastest-formula/
(người gõ lại cái bảng tiếng Việt khá cẩu thả, dấu phẩy dấu chấm tùm lum)

1668015905685.png

Chính trong bài ấy có nói rằng họ không ngờ Index/Match lại không bằng VLookup. Họ cũng lý luận như bài #6 của tôi: nạp mảng 1 chiều tại sao lại chậm hơn mảng 2 chiều.
Tôi đoán rằng trong bài trên chạy 365, nghe nói có cải tiến VLookup rất nhiều.
Tuy nhiên, vì bài ấy chỉ cho nbieets dữ liệu test chứ không cho biết code VBA để đo cho nên khó biết độ chính xác.

Theo bài dưới đây thì có những người dùng con toán sai:
(bài này khong cho biết ngày cho nên tôi không biết nó viết trước hay sau bài trên)
https:// exceluser. com/702/why-index-match-is-far-better-than-vlookup-or-hlookup-in-excel/
 
(người gõ lại cái bảng tiếng Việt khá cẩu thả, dấu phẩy dấu chấm tùm lum)
Không chỉ có vậy. Power query biến thành truy vấn nguồn, Index Match biến thành chỉ số trận đấu, Offset Match biến thành Trận đấu offset, Table biến thành cái bàn, và trong tình huống "trận đấu" tôi lại tưởng bàn thắng thua của bóng đá. ... Kiểu tiếng Việt gì vậy? Thế thì nội dung khác của bản gốc sẽ đi về đâu?
Chính trong bài ấy có nói rằng họ không ngờ Index/Match lại không bằng VLookup.
Mới đọc lướt qua thì có câu:
"With both tables on the same sheet, INDEX MATCH performed much slower than VLOOKUP (8.9 against 6.6 seconds).
But if we move the lookup table to another worksheet, the formula starts working much faster (~ 5 seconds), which is better than VLOOKUP."

Nếu dò tìm trên cùng sheet thì Index match có vẻ chậm hơn nhiều, nhưng nếu dò tìm khác sheet thì sẽ rất nhanh, nhanh hơn cả Vlookup.

Sau đó, khi thấy nguyên bản chữ "Offset Match" thì tôi đọc tiếp thì thấy Offset Match rất nhanh, kể cả khi tra cứu nguyên cột, Vlookup chỉ ngửi khói.
Phần tiếp theo thì rõ rồi, data định dạng table thì tốc độ tăng lên, ...

TB:
- Như bài #3, dù chưa đọc bài phân tích tiếng Anh kia, tôi cũng nói rằng sử dụng hàm nào cần tùy theo tình huống, và phù hợp với tiêu chí công thức đơn giản (tiêu chí của riêng tôi). Nếu dùng Vlookup kết hợp Choose để dò tìm từ phải qua trái (gọi là "nâng cao"), theo tôi giống như xoáy nòng đôn dên xe 50cc thành 65cc, rồi không thèm dùng xe 70cc.
- Anh và tôi siêng quá. Tác giả bài #5 quăng 1 cái bảng rất khó hiểu, không 1 lời chú thích, giống như đập vào mặt: "Chứng minh hả? NÀY THÌ CHỨNG MINH"; thế mà lại chịu khó tìm nguồn và giải thích.
 
...
- Như bài #3, dù chưa đọc bài phân tích tiếng Anh kia, tôi cũng nói rằng sử dụng hàm nào cần tùy theo tình huống, và phù hợp với tiêu chí công thức đơn giản (tiêu chí của riêng tôi). Nếu dùng Vlookup kết hợp Choose để dò tìm từ phải qua trái (gọi là "nâng cao"), theo tôi giống như xoáy nòng đôn dên xe 50cc thành 65cc, rồi không thèm dùng xe 70cc.
Hong hẳn vậy. VLookup là hàm căn bản của Excel, cũng như bài toán động tử lớp 4 lớp 5. Bất cứ người nào sử dụng Excel một thời gian đều thuộc lòng nó. Ai cũng công nhận là nó dễ hiểu dễ dùng. (trử phi bảng tra cứ thay đổi hoài, việc mà ở GPE mới xảy ra nhiều chứ người đời cũng không nhiều)
Kinh nghiệm tôi huấn luyện người, ngay cả phải dùng Choose để chuyển cột, cũng dễ hiểu hơn Index/Match. Và rốt cuộc là tôi chỉ mách cho người cần học là "dùng Index/Match khi bảng dò hay thay đổi"

Về tốc độ của Offset, cấu trúc bảng tính giúp cho hàm Offset hoạt động rất nhanh. Rất tiếc rằng nó là hàm volatile cho nên dùng cho dữ liệu lớn khá bất tiện.

...
- Anh và tôi siêng quá. Tác giả bài #5 quăng 1 cái bảng rất khó hiểu, không 1 lời chú thích, giống như đập vào mặt: "Chứng minh hả? NÀY THÌ CHỨNG MINH"; thế mà lại chịu khó tìm nguồn và giải thích.
Tôi cố công tìm xuất xứ của cái bảng ấy để chứng minh cho người đã quote nó là: dẫn chứng mà không dẫn nguồn, dẫn phương pháp thì những con số dẫn chứng ấy chỉ là rác rưởi.

Chú thích: ở trên, cái bảng dich Function thành "hàm số" là sai. Chỉ vỏn vẹn "hàm" mới đúng.
Lý do: trong đám chỉ có VLookup trả về dữ liệu cứng. Các hàm khác đều có khả năng trả về tham chiếu vào ô/range kết quả.

Tôi làm việc này vì các bạn khác cần học hỏi trong GPE chứ chả phải để tranh luận với người ấy.
 
Chỉ dựa vào 1 file dữ liệu và kết quả so sánh không rỏ nguồn gốc và kết luận Vloopkup nhanh hơn Match và Index là quá chủ quan, trên GPE có rất nhiều trường hợp Vlookup chạy không nỗi phải chuyển sang dùng Match và Index
 
Tốc độ thì ngay cả Vlookup hay Xlookup đều là muỗi so với Lookupvalue khi dùng Data Model nhé bạn!
Bác cho e hỏi , trên BI : e có danh mục khách hàng, bảng kê hóa đơn bán hàng , e cần tìm nơi ăn đầu tiên của khách hàng (e định áp công thức để thêm cột ở danh mục khách hàng để có được dữ liệu nơi ăn đầu tiên) mục đích là báo cáo phân chia khách đó cho nhà hàng nào chiếm hữu. bác có hàm nào chỉ giáo e với ạ (e thấy điều kiện ở đây là : 1. ngày ăn nhỏ nhất trong bảng chi tiết bán hàng, 2. Mã khách hàng trên chi tiết bán hàng với danh mục khách hàng trùng nhau) . e cảm ơn các bác
 
Web KT

Bài viết mới nhất

Back
Top Bottom