Hàm Vlookup lấy nhiều giá trị trùng mã hàng

Liên hệ QC

timhocexcel

Thành viên chính thức
Tham gia
5/12/18
Bài viết
86
Được thích
24
Nội dung em để trong file, nhờ các bạn giúp em công thức
 

File đính kèm

Nội dung em để trong file, nhờ các bạn giúp em công thức
Đặt name Data:
Mã:
=Sheet1!$A$2:$K$7
Đặt name Pos lấy vị trí thỏa mãn điều kiện mã hàng:
Mã:
=IF(OFFSET(Data,,,,1)=LOOKUP("zz",'ket qua'!$A$2:$A2),ROW(Data)-1,"")
Công thức ở sheet ket qua, B2:
Mã:
=INDEX(Data,SMALL(Pos,ROW($A2)-MATCH(LOOKUP("zz",$A$2:$A2),$A$2:$A$7,0)),COLUMN(B$1))
 

File đính kèm

Đặt name Data:
Mã:
=Sheet1!$A$2:$K$7
Đặt name Pos lấy vị trí thỏa mãn điều kiện mã hàng:
Mã:
=IF(OFFSET(Data,,,,1)=LOOKUP("zz",'ket qua'!$A$2:$A2),ROW(Data)-1,"")
Công thức ở sheet ket qua, B2:
Mã:
=INDEX(Data,SMALL(Pos,ROW($A2)-MATCH(LOOKUP("zz",$A$2:$A2),$A$2:$A$7,0)),COLUMN(B$1))
Bạn chỉnh sửa giúp mình trường hợp mã hàng rỗng thì dữ liệu bên sheet kết quả sẽ là rỗng, nếu cột mã hàng rỗng mà hiện chữ #NUM! thì khi in sẽ có chữ #NUM!
 

File đính kèm

File đính kèm

Đặt name Data:
Mã:
=Sheet1!$A$2:$K$7
Đặt name Pos lấy vị trí thỏa mãn điều kiện mã hàng:
Mã:
=IF(OFFSET(Data,,,,1)=LOOKUP("zz",'ket qua'!$A$2:$A2),ROW(Data)-1,"")
Công thức ở sheet ket qua, B2:
Mã:
=INDEX(Data,SMALL(Pos,ROW($A2)-MATCH(LOOKUP("zz",$A$2:$A2),$A$2:$A$7,0)),COLUMN(B$1))
Bạn sửa giúp mình công thức nếu kết quả không ở dòng thứ 2 mà kết quả bắt đầu từ dòng thứ 7, thì sửa công thức như thế nào, nhờ bạn giúp.
 

File đính kèm

Bạn sửa giúp mình công thức nếu kết quả không ở dòng thứ 2 mà kết quả bắt đầu từ dòng thứ 7, thì sửa công thức như thế nào, nhờ bạn giúp.
Thử: Sheet "ket qua"
Mã:
B2=IFERROR(VLOOKUP(LOOKUP("zz",$A$1:$A2),Sheet1!$A$2:$K$8,MATCH(B$1,Sheet1!$A$1:$K$1,),),"")
Enter, fill qua phải rồi fill cả hàng xuống.

Thân
 

File đính kèm

Thử: Sheet "ket qua"
Mã:
B2=IFERROR(VLOOKUP(LOOKUP("zz",$A$1:$A2),Sheet1!$A$2:$K$8,MATCH(B$1,Sheet1!$A$1:$K$1,),),"")
Enter, fill qua phải rồi fill cả hàng xuống.

Thân
Bạn ơi, công thức của bạn là bắt buột phải nhập hết 4 mã hàng, nếu trường hợp mình nhập 1 mã hàng thì không áp dụng được.
 

File đính kèm

Bạn ơi, công thức của bạn là bắt buột phải nhập hết 4 mã hàng, nếu trường hợp mình nhập 1 mã hàng thì không áp dụng được.
Giờ tôi mới hiểu bạn muốn điều gì! Điều chỉnh:
Mã:
B2=IF(ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1<=COUNTIF(Sheet1!$A$2:$A$100,LOOKUP("zz",$A$1:$A2)),IFERROR(VLOOKUP(LOOKUP("zz",$A$1:$A2),Sheet1!$A$2:$K$100,MATCH(B$1,Sheet1!$A$1:$K$1,),),""),"")
Chỉ Enter.

Thân
 

File đính kèm

Giờ tôi mới hiểu bạn muốn điều gì! Điều chỉnh:
Mã:
B2=IF(ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1<=COUNTIF(Sheet1!$A$2:$A$100,LOOKUP("zz",$A$1:$A2)),IFERROR(VLOOKUP(LOOKUP("zz",$A$1:$A2),Sheet1!$A$2:$K$100,MATCH(B$1,Sheet1!$A$1:$K$1,),),""),"")
Chỉ Enter.

Thân
Quá tuyệt, không biết đến bao giờ mình mới làm được công thức như vậy.
 
Giờ tôi mới hiểu bạn muốn điều gì! Điều chỉnh:
Mã:
B2=IF(ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1<=COUNTIF(Sheet1!$A$2:$A$100,LOOKUP("zz",$A$1:$A2)),IFERROR(VLOOKUP(LOOKUP("zz",$A$1:$A2),Sheet1!$A$2:$K$100,MATCH(B$1,Sheet1!$A$1:$K$1,),),""),"")
Chỉ Enter.

Thân
Mình thấy file này cũng tương tự dữ liệu của mình, nhưng dữ liệu giữa các cột tiêu đề có khác hoặc rỗng, chỉ cần mã hàng giống nhau là sheet kết quả liệt kê tất cả các dữ liệu có cùng mã hàng đó
 

File đính kèm

Giờ tôi mới hiểu bạn muốn điều gì! Điều chỉnh:
Mã:
B2=IF(ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1<=COUNTIF(Sheet1!$A$2:$A$100,LOOKUP("zz",$A$1:$A2)),IFERROR(VLOOKUP(LOOKUP("zz",$A$1:$A2),Sheet1!$A$2:$K$100,MATCH(B$1,Sheet1!$A$1:$K$1,),),""),"")
Chỉ Enter.

Thân
Giả sử cùng mã nhưng dữ liệu các dòng khác nhau thì lagm sao anh :D
 
Giả sử cùng mã nhưng dữ liệu các dòng khác nhau thì lagm sao anh :D
Giống @Alibaba_ hỏi
Mình thấy file này cũng tương tự dữ liệu của mình, nhưng dữ liệu giữa các cột tiêu đề có khác hoặc rỗng, chỉ cần mã hàng giống nhau là sheet kết quả liệt kê tất cả các dữ liệu có cùng mã hàng đó

Trả lời chung: thì phải làm công thức "nặng hơn"
Mã:
B2=IFERROR(T(OFFSET(Sheet1!B$1,AGGREGATE(15,6,ROW($1:$1000)/(LOOKUP("zz",$A$1:$A2)=Sheet1!$A$2:$A$1000),ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1),)),"")
Chỉ Enter. Fill qua phải, rồi fill cả hàng xuống.

Công thức trên dùng Vlookup() sẽ nhẹ hơn công thức mảng Aggregate().

Thân
 

File đính kèm

Giống @Alibaba_ hỏi


Trả lời chung: thì phải làm công thức "nặng hơn"
Mã:
B2=IFERROR(T(OFFSET(Sheet1!B$1,AGGREGATE(15,6,ROW($1:$1000)/(LOOKUP("zz",$A$1:$A2)=Sheet1!$A$2:$A$1000),ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1),)),"")
Chỉ Enter. Fill qua phải, rồi fill cả hàng xuống.

Công thức trên dùng Vlookup() sẽ nhẹ hơn công thức mảng Aggregate().

Thân
Bạn xem chỉnh công thức lại giùm mình, nếu dữ liệu là Text thì áp dụng được, nếu dữ liệu là số thì công thức này không áp dụng được.
 

File đính kèm

Giống @Alibaba_ hỏi


Trả lời chung: thì phải làm công thức "nặng hơn"
Mã:
B2=IFERROR(T(OFFSET(Sheet1!B$1,AGGREGATE(15,6,ROW($1:$1000)/(LOOKUP("zz",$A$1:$A2)=Sheet1!$A$2:$A$1000),ROW()-MATCH(LOOKUP("zz",$A$1:$A2),$A$1:$A2,)+1),)),"")
Chỉ Enter. Fill qua phải, rồi fill cả hàng xuống.

Công thức trên dùng Vlookup() sẽ nhẹ hơn công thức mảng Aggregate().

Thân
Hàm aggregate trong excel 2007 không có hả gì vậy bạn, công thức này áp dụng trên excel 2013 bình thường, nhưng qua máy excel 2007 thì không áp dụng được, nhờ bạn sửa công thức có thể áp dụng trên excel 2007.
 
Lót dép hóng anh trai cho xem mấy bài võ dân tộc cổ truyền :D năm 2003 -2007
 
Web KT

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

Back
Top Bottom