Hàm Vlookup tìm ngược từ phải sang trái? (1 người xem)

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

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

vnproc

Thành viên hoạt động
Tham gia
1/2/11
Bài viết
150
Được thích
6
Mình có trường hợp vlookup này (trong file đính kèm) điều kiện ở cột 2 nhưng index ở cột 1. Mình không thể dùng được Vlookup. Mong các bạn góp ý.

Cảm ơn.
 

File đính kèm

Cái này bạn dùng LOOKUP
Mã:
=LOOKUP(2,1/(B2:B9=D1),A2:A9)
 
Lần chỉnh sửa cuối:
Mình có trường hợp vlookup này (trong file đính kèm) điều kiện ở cột 2 nhưng index ở cột 1. Mình không thể dùng được Vlookup. Mong các bạn góp ý.

Cảm ơn.

Trường hợp của bạn dùng thế này là gọn nhất:
Mã:
=LOOKUP(2,1/($D$1=$B$2:$B$9),$A$2:$A$9)
Không thể dùng VLOOKUP để tìm ngược được đâu nhé
----------------
Cái này bạn dùng LOOKUP
Mã:
=LOOKUP(D1,B2:B9,A2:A9)
Chắc ăn chưa đấy?
 
Cấu trúc của hàm VLOOKUP


Chức năng: Hàm VLOOKUP là hàm dò tìm theo cột, sẽ trả về giá trị của một ô nằm trên một cột nào đó nếu thỏa mãn điều kiện dò tìm.

Cú pháp hàm: VLOOKUP(lookup_value,table_array,col_index_num,opt ion_lookup)

- Lookup_value: là giá trị dùng để dò tìm, giá trị này sẽ được dò tìm trong cột đầu tiên của bảng dữ liệu dò tìm. Giá trị dò tìm có thể là một số, một chuỗi, một công thức trả về giá trị hay một tham chiếu đến một ô nào đó dùng làm giá trị dò tìm.

- Table_array: là bảng dùng để dò tìm, bảng dò tìm có thể là tham chiếu đến một vùng nào đó hay Name trả về vùng dò tìm. Bảng dò tìm gồm có Rj hàng và Ci cột (I,j >=1), trong đó cột thứ nhất của bảng dò tìm sẽ được dùng để dò tìm.

- Col_index_num: là số thứ tự của cột (tính từ trái qua phải) trong bảng dò tìm chứa giá trị mà ta muốn trả về. Col_index_num phải >=1 và <= số cột lớn nhất có trong bảng dò tìm, ngược lại hàm sẽ trả về #VALUE! hoặc #REF.

- Option_lookup: là tùy chọn xác định kiểu dò tìm, có 2 kiểu dò tìm:


True hoặc 1 hoặc để trống: là kiểu dò tìm tương đối, hàm sẽ lấy giá trị đầu tiên mà nó tìm được trên cột đầu tiên trong bảng dò tìm. Trong trường hợp tìm không thấy, nó sẽ lấy giá trị lớn nhất mà có giá trị nhỏ hơn giá trị dò tìm.
False hoặc 0: là kiểu dò tìm chính xác, hàm sẽ lấy giá trị đầu tiên mà nó tìm được trên cột đầu tiên trong bảng dò tìm. Trong trường hợp tìm không thấy, hàm sẽ trả về #N/A.

bạn thử test file và đọc chỗ màu đỏ
 

File đính kèm

Chưa ai dùng hàm này, thôi em dùng cho độc. 1 mình 1 kiểu. :D

ndu, leonguyenz: Em chưa rõ lắm về cái lookup, bữa nào rảnh anh và chú chỉ giúp em với. Em cảm ơn nhiều lắm.
 

File đính kèm

Lần chỉnh sửa cuối:
Mình cảm ơn các bạn rất nhiều.
 
Trường hợp của bạn dùng thế này là gọn nhất:
Mã:
=LOOKUP([COLOR=#ff0000]2[/COLOR],1/($D$1=$B$2:$B$9),$A$2:$A$9)
Không thể dùng VLOOKUP để tìm ngược được đâu nhé
----------------

Chắc ăn chưa đấy?
anh ơi cho em hỏi :?
Tại sao không không viết là
Mã:
=LOOKUP([COLOR=#FF0000]1[/COLOR],1/($D$1=$B$2:$B$9),$A$2:$A$9)
,
 
anh ơi cho em hỏi :?
Tại sao không không viết là
Mã:
=LOOKUP([COLOR=#FF0000]1[/COLOR],1/($D$1=$B$2:$B$9),$A$2:$A$9)
,

Nhất định không thể là số 1 được
Con số màu đỏ ấy = bao nhiêu tùy ý nhưng BẮT BUỘC phải >1 (cho chắc ăn)
Bạn bôi đen đoạn 1/($D$1=$B$2:$B$9) trên thanh Formula rồi bấm F9 sẽ thấy chỉ có 2 loại kết quả: Hoặc là lỗi DIV/0, hoặc là số 1 ----> Vậy giá trị cần tìm phải >1 để giá trị trả về là số 1 cuối cùng tìm thấy
 
Lần chỉnh sửa cuối:
Mình có trường hợp vlookup này (trong file đính kèm) điều kiện ở cột 2 nhưng index ở cột 1. Mình không thể dùng được Vlookup. Mong các bạn góp ý.

Cảm ơn.

Không dùng được Vlookup thì dùng hàm khác vậy
Tại E1 trong File của bạn nhập hàm: =INDEX($A$2:$B$9;MATCH(D1;$B$2:$B$9;0);1)
Đường mòn không đi được ta mở đường mới thôi
 
Nhất định không thể là số 1 được
Con số màu đỏ ấy = bao nhiêu tùy ý nhưng BẮT BUỘC phải >1
Bạn bôi đen đoạn 1/($D$1=$B$2:$B$9) trên thanh Formula rồi bấm F9 sẽ thấy chỉ có 2 loại kết quả: Hoặc là lỗi DIV/0, hoặc là số 1 ----> Vậy giá trị cần tìm phải >1 để giá trị trả về là số 1 cuối cùng tìm thấy

Hix từ trước đến nay em vẫn hiểu hàm Lkup như sau :

  • Lookup_vector phải được sắp xếp theo thứ tự tăng dần như: -2,-1,0,1,2; A,B,C..Z; FALSE, TRUE. Nếu không, kết quả trả về nhiều khi không chính xác.
  • Nếu như không tìm thấy Lookup_value trong vùng dò tìm, hàm sẽ lấy giá trị lớn nhất có trong vùng dò tìm (Lookup_vector) mà có giá trị nhỏ hơn hoặc bằng giá trị dò tìm Lookup_vector.


    Tức là nếu viết 1 --> thi hàm luôn tìm đúng vị trí số 1 trong mảng 1/($D$1=$B$2:$B$9). Kể cả trường hợp {DIV/0,DIV/0,1,1,1,DIV/0) --> nếu ta viết là 1 hoặc số >1 thì hàm luôn tìm về giá trị số 1 ở cuối cùng

    ===> để em test lại file một lần nữa xem đúng không!
    !$@!!
  • Ah em hiểu rồi anh viết >1 để cho chắc ăn ( xem cách anh viết code em thấy tính anh cẩn thận và chắc chắn mà ! :-=)
 
Lần chỉnh sửa cuối:
Hix từ trước đến nay em vẫn hiểu hàm Lkup như sau :

  • Lookup_vector phải được sắp xếp theo thứ tự tăng dần như: -2,-1,0,1,2; A,B,C..Z; FALSE, TRUE. Nếu không, kết quả trả về nhiều khi không chính xác.
  • Nếu như không tìm thấy Lookup_value trong vùng dò tìm, hàm sẽ lấy giá trị lớn nhất có trong vùng dò tìm (Lookup_vector) mà có giá trị nhỏ hơn hoặc bằng giá trị dò tìm Lookup_vector.


    Tức là nếu viết 1 --> thi hàm luôn tìm đúng vị trí số 1 trong mảng 1/($D$1=$B$2:$B$9). Kể cả trường hợp {DIV/0,DIV/0,1,1,1,DIV/0) --> nếu ta viết là 1 hoặc số >1 thì hàm luôn tìm về giá trị số 1 ở cuối cùng

    ===> để em test lại file một lần nữa xem đúng không!
    !$@!!
  • Ah em hiểu rồi anh viết >1 để cho chắc ăn ( xem cách anh viết code em thấy tính anh cẩn thận và chắc chắn mà ! :-=)

Lâu quá rồi không nhớ ở bài nào, tôi đã bị con số 1 này hành hạ ---> Cuối cùng, viết số 2 cho chắc
 
Vui lòng làm giúp em file đính kèm

Vui lòng làm giúp em file đính kèm -
EM cám ơn các Anh Chị
 

File đính kèm

Lần chỉnh sửa cuối:
E7=INDEX(Dmuc!$C$2:$C$50000,MATCH(--$F7,Dmuc!$F$2:$F$5000,0))

Nếu không được thì thay dấu , thành ; trong công thức.
 

File đính kèm

Lần chỉnh sửa cuối:
Hàm LOOKUP sao không dùng:
Mã:
=LOOKUP(2,1/(TEXT(Dmuc!$F$2:$F$5000,"@")=F7),Dmuc!$C$2:$C$5000)

--------Thầy vui lòng giai thich giúp em chổ : "@" nghĩa là gì ??

-------- Và khắc phục lỗi #N/A khi cột F là cột 'trống' thì cột E cũng 'trống'
 
Lần chỉnh sửa cuối:
--------Thầy vui lòng giai thich giúp em chổ : "@" nghĩa là gì ??

-------- Và khắc phục lỗi #N/A khi cột F là cột 'trống' thì cột E cũng 'trống'

Hàm Text có cú pháp =TEXT(Value, Format_Text)
Đối số Format_Text nếu = "@" có nghĩa là bạn muốn chuyển Value thành Text toàn bộ
Lỗi #N/A xuất hiện khi không tìm thấy, tức trong mảng trả về từ phép so sánh TEXT(Dmuc!$F$2:$F$5000,"@")=F7 không có phần tử nào =TRUE
Vậy, dựa vào chổ này ta đặt điều kiện là được rồi:
Mã:
=IF(COUNT(1/(TEXT(Dmuc!$F$2:$F$5000,"@")=F7)),LOOKUP(2,1/(TEXT(Dmuc!$F$2:$F$5000,"@")=F7),Dmuc!$C$2:$C$5000),"")
Công thức này phải kết thúc bằng Ctrl + Shift + Enter
Hoặc công thức này:
Mã:
=IF(SUMPRODUCT(1*(TEXT(Dmuc!$F$2:$F$5000,"@")=F7)),LOOKUP(2,1/(TEXT(Dmuc!$F$2:$F$5000,"@")=F7),Dmuc!$C$2:$C$5000),"")
Công thức cuối cùng chỉ cần Enter bình thường
Nói chung là: Hàng đống cách
 
Bạn ơi, bn có thể giải thích dùm mình, tại sao là 1/(B2:B9=D1)?
Bạn đưa con trỏ vào trong công thức và bôi đen cụm này, nhấn F9 để xem.
Biểu thức (B2:B9=D1) dạng Logical sẽ trả về TRUE và FALSE, tương ứng với giá trị 1 và 0.
Kết quả 1/(B2:B9=D1) sẽ cho một mảng 8 phần tử chỉ có 1 và #DIV! (lỗi do chia với 0).
LOOKUP một giá trị số (trong công thức là 2, trường hợp 1 cũng ra kết quả, nhưng đã có xảy ra lỗi ?! nên nhiều người dùng giá trị 2), trong mảng chỉ có số 1 và #DIV! sẽ trả về vị trí số cuối cùng trong mảng đó. Kết quả trả về vị trí tìm được trong A2:A9.
 
Mình có trường hợp vlookup này (trong file đính kèm) điều kiện ở cột 2 nhưng index ở cột 1. Mình không thể dùng được Vlookup. Mong các bạn góp ý.

Cảm ơn.

sao không được hả bạn, bạn suy nghĩ 1 chút là ra. Xem file nha
 

File đính kèm

Cái này bạn dùng LOOKUP
Mã:
=LOOKUP(2,1/(B2:B9=D1),A2:A9)

Cám ơn bác đã hướng dẫn em

Trong ví dụ của bác vnproc, em làm như thế này =LOOKUP(D1,$B$2:$B$9,$A$2:$A$9) nó cũng ra đúng

Em thấy bác leonguyenz làm như vậy cũng đúng. Bác có thể giải thích đoạn bác làm giúp em với

Cám ơn
 
Cám ơn bác đã hướng dẫn em

Trong ví dụ của bác vnproc, em làm như thế này =LOOKUP(D1,$B$2:$B$9,$A$2:$A$9) nó cũng ra đúng

Em thấy bác leonguyenz làm như vậy cũng đúng. Bác có thể giải thích đoạn bác làm giúp em với

Cám ơn

nghe đồn là bác Leo bế quan rồi............
 
@@

Bác biết không hướng dẫn em với

Vì em thấy bác leonguyenz làm :
=LOOKUP(2,1/(B2:B9=D1),A2:A9)

Em thì làm đơn giản hơn 1 tí
=LOOKUP(D1,$B$2:$B$9,$A$2:$A$9)

Em không biết cách của em gặp trường hợp khác có lỗi gì không ?
 
@@

Bác biết không hướng dẫn em với

Vì em thấy bác leonguyenz làm :
=LOOKUP(2,1/(B2:B9=D1),A2:A9)

Em thì làm đơn giản hơn 1 tí
=LOOKUP(D1,$B$2:$B$9,$A$2:$A$9)

Em không biết cách của em gặp trường hợp khác có lỗi gì không ?

nó là như vậy:
(B2:B9=D1)===> tạo ra một mảng==>{true, false, true, false...} tức cái nào đúng thì true cái nào sai là false
, true là 1 false là 0===>{1,0,1,0,1,......v.v}

tiếp 1/{
1,0,1,0,1,......v.v}===>cái nào 1 thì thành 1, cái nào 0 thành lỗi {1,#div,.....}
sau đó thì hàm lookup sẻ tìm từ bên phải của mảng qua thấy cái nào gần bằng 2 thì lấy vị trí đó
lookup(2,1/{1,0,1,0,1,......v.v},$A$2:$A$9)
lấy được vị trí nào thì nó trả về vị trí tương ứng ở cột A

 
nó là như vậy:
(B2:B9=D1)===> tạo ra một mảng==>{true, false, true, false...} tức cái nào đúng thì true cái nào sai là false
, true là 1 false là 0===>{1,0,1,0,1,......v.v}

tiếp 1/{
1,0,1,0,1,......v.v}===>cái nào 1 thì thành 1, cái nào 0 thành lỗi {1,#div,.....}
sau đó thì hàm lookup sẻ tìm từ bên phải của mảng qua thấy cái nào gần bằng 2 thì lấy vị trí đó
lookup(2,1/{1,0,1,0,1,......v.v},$A$2:$A$9)
lấy được vị trí nào thì nó trả về vị trí tương ứng ở cột A


Cám ơn bác

Cho em hỏi tiếp là số 2 ở đầu có tác dụng gì vậy? Vì em cũng tìm hiểu hàm Lookup thông qua các bài của thầy ndu96081631, hoamattroicoi...Em để ý là thấy các thầy đa số sử dụng số 2 ở đầu

Em cảm ơn
 
Cám ơn bác

Cho em hỏi tiếp là số 2 ở đầu có tác dụng gì vậy? Vì em cũng tìm hiểu hàm Lookup thông qua các bài của thầy ndu96081631, hoamattroicoi...Em để ý là thấy các thầy đa số sử dụng số 2 ở đầu

Em cảm ơn

Để thử bạm làm như sau:
lookup(1,{1,2,3,4,5}) bạn tăng số 1 màu đỏ từ 1 đến 10 xem kết quả như thế nào?
lưu ý cái mảng mà mình làm ở trên nó chỉ cho ra 2 phần tử là 1 và lổi #DIV
 
Kiến thức excel của em bị hỏng nhiều phần quá. Em làm như bác nhưng không hiểu mục đích để làm gì

Em có file để ví dụ, nói về số báo phát hành

- Thứ 7 và CN nghỉ, qua năm mới thì số báo sẽ trở về bắt đầu lại từ đầu
- Chủ yếu là bên sheet 2, giờ em muốn ấn số báo nào ra, là sẽ xuất hiện thứ + ngày ở 2 ô tiếp theo

Em đã làm thử theo cách của em. Bác giúp em làm theo cách nãy giờ em hỏi để em có thể hiểu rõ hơn được không ạ

Em cám ơn
 

File đính kèm

Kiến thức excel của em bị hỏng nhiều phần quá. Em làm như bác nhưng không hiểu mục đích để làm gì

Em có file để ví dụ, nói về số báo phát hành

- Thứ 7 và CN nghỉ, qua năm mới thì số báo sẽ trở về bắt đầu lại từ đầu
- Chủ yếu là bên sheet 2, giờ em muốn ấn số báo nào ra, là sẽ xuất hiện thứ + ngày ở 2 ô tiếp theo

Em đã làm thử theo cách của em. Bác giúp em làm theo cách nãy giờ em hỏi để em có thể hiểu rõ hơn được không ạ

Em cám ơn

àh, xin lổi, tôi làm bạn rối thêm

cthức bạn đúng rồi, thì bạn tìm cách kia làm gì?, cái cách kia thì thong thường người ta tìm 2,3 điều kiện trở lên người ta mới xài
Mã:
B2=LOOKUP(2,1/(Sheet1!$D$2:$D$148=$A2),Sheet1!B$2:B$148)
thông thường thì người ta sử dụng cthức này
B2=INDEX(Sheet1!$B$2:$C$148,MATCH($A2,Sheet1!$D$2:$D$148,0),COLUMN()-1)
 
Có anh/chị nào có đoạn code VBA mà có thể Vlookup ngược không ?
Cho em xin với.
Em đấ sủ dụng hàm LOOKUP(2,1/(TEXT(Dmuc!$F$2:$F$5000,"@")=F7),Dmuc!$C$2:$C$5000) của thayndu96081631 áp dụng rất ok nhưng không tự động chạy và update được.
Ai có thể viết dùm em đoạn code vba áp dụng như dòng công thức trên không. Cám ơn mọi người rất nhiều.
 
em thì chịu chấp nhận số phận vậy =lookup(2,1/(<vùng dò>=<giá trị dò>),<kết quả dò>)
mặc định =lookup(2,1/ là hàm luôn cho rồi khỏi hỏi nhiều :v, đôi khi ra sai do không có sắp xết thứ tự nên đành dùng index cho rồi
 
ai giúp em với, loay hoay với LOOKUP mãi mà không đúng.

Tks nhiều!
 

File đính kèm

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

Back
Top Bottom