mt00084431
Thành viên mới

- Tham gia
- 9/10/09
- Bài viết
- 1
- Được thích
- 0
Sửa bảng của bạn một chút để phục vụ công tác truy tìm. Hy vọng đúng ý bạn!
Hàm của mình còn cộng thêm 2 nữa sau hàm match() vì từ cột A đến cột C trong mảng $A$15:$E$17 còn 2 cột là A và B mà!Anh Linh chỉ giùm em công thức này
VLOOKUP(LEFT(C4,2),$A$15:$E$17,MATCH(RIGHT(C4,1),$C$14:$E$14,0),FALSE), em làm ra kết quả nhưng sai, em không hiểu sai chỗ nào?
Hình như mã nào có chữ "T" đằng sau đều không cho kết quả đúng thì phải. Em đang tìm hiểu mà chưa biết tại sao nữa.Sửa bảng của bạn một chút để phục vụ công tác truy tìm. Hy vọng đúng ý bạn!
Sorry, thêm số 0 trong hàm match(), match_type = 0: Hàm sẽ dò tìm chính xác giá trị lookup_value trong lookup_array, nếu không tìm thấy hàm sẽ báo lỗi #N/A.Hình như mã nào có chữ "T" đằng sau đều không cho kết quả đúng thì phải. Em đang tìm hiểu mà chưa biết tại sao nữa.
=VLOOKUP(LEFT(C4,2),$A$15:$E$17,LOOKUP(RIGHT(C4),{"M","T","X"},{3,5,4}),0)
Dạ anh cho em hỏi trong danh sách thì KH số 3 Lê Anh (đi từ Nha Trang bằng tàu NT-T)của anh là giá 900 nhưng đối chiếu trong bảng thì chỉ có 550 thôiSửa bảng của bạn một chút để phục vụ công tác truy tìm. Hy vọng đúng ý bạn!
Dạ anh cho em hỏi trong danh sách thì KH số 3 Lê Anh (đi từ Nha Trang bằng tàu NT-T)của anh là giá 900 nhưng đối chiếu trong bảng thì chỉ có 550 thôi
Nhân tiện nhờ anh Test bài của em với. Cảm ơn anhn nhiều !
=VLOOKUP(D4,$B$15:$E$17,MATCH(RIGHT(C4)&"*",$C$14:$E$14,0)+1,0)
File lúc đầu mình tải lên dùng hàm match() chưa chuẩn bạn ạ! Đã sửa lại rồi đó!Dạ anh cho em hỏi trong danh sách thì KH số 3 Lê Anh (đi từ Nha Trang bằng tàu NT-T)của anh là giá 900 nhưng đối chiếu trong bảng thì chỉ có 550 thôi
Nhân tiện nhờ anh Test bài của em với. Cảm ơn anhn nhiều !
Mình đã sửa lại hàm match() tại #6.Dạ anh cho em hỏi trong danh sách thì KH số 3 Lê Anh (đi từ Nha Trang bằng tàu NT-T)của anh là giá 900 nhưng đối chiếu trong bảng thì chỉ có 550 thôi
Nhân tiện nhờ anh Test bài của em với. Cảm ơn anhn nhiều !
Bạn đúng là quá giỏi luôn hpkhuong, vậy mà mình nghĩ ngợi mãi không ra.Tìm hiểu lại hàm MATCH
Mã:=INDEX($C$17:$E$21,MATCH(E5,$B$17:$B$21,0),MATCH(IF(DAY(D5)<11,"Ngày 1 đến 10",IF(DAY(D5)<21,"Ngày 11 đến 20","Ngày2 1 đến 31")),$C$16:$E$16,0))
Thế này có được không hay là buộc phải 2 match()Chào các bạn,
Xin xem file đính kèm.
Thật ra mình đã làm xong bài tập này nhưng mình vẫn còn thắc mắc xin các bạn có thể giải đáp dùm mình. Mình chân thành cảm ơn.
Bảng 1
View attachment 187330
Bảng 2
View attachment 187328
Câu 1 - Tính Giá Vé K5 cho mỗi chuyến bay, biết rằng Giá Vé được tra trong Bảng 2 dựa vào Tuyến Bay, Ngày Bay ở Bảng 1.
Thật ra câu 1 mình dùng hàm Vlookup kết hợp với hàm If thì kết ra vẫn ra đúng nhưng bình thường nếu dò cả hàng & cột thì mình thích dùng Index() kết hợp với Match() hơn = Index(...,Match(),Match())
Ngặt nỗi, cái Bảng 2 không cho mình dò cột bằng cách dùng hàm Match(). Mình có nghĩ tới dùng cột phụ ở Bảng 1 & sửa lại tên C16:E16 nhưng thấy cột phụ & sửa tên rắc rối quá nên thôi. Các bạn giúp mình lập công thức Index(….,Match(),Match()) cho câu 1 mà không cần sửa tên hay thêm cột phụ nghen. Mình xin chân thành cảm ơn.
K5= INDEX($C$17:$E$21,MATCH(E5,$B$17:$B$21,0),MATCH(AND("Ngày"&" "&DAY(D5),"Ngày"&" "&DAY(D5)),$C$16:$E$16,0)) = #VALUE! → Mình biết là công thức này sai ở hàm Match() thứ 2 nhưng xoay sở mãi vẫn không nghĩ ra công thức đúng.
Mình chân thành cảm ơn.
Chúc các bạn 1 tuần mới tràn đầy năng lượng & niềm vui.
=INDEX($C$17:$E$21,MATCH(E5,$B$17:$B$21,0),INT(DAY(D5)/10)+1)
Chào bạn TheThienChu,Thế này có được không hay là buộc phải 2 match()
Mã:=INDEX($C$17:$E$21,MATCH(E5,$B$17:$B$21,0),INT(DAY(D5)/10)+1)
Hey there bebo021999,Có nhiều cách ngắn gọn hơn nhiều, nhưng "ép" dùng MATCH thì có cách này:
* Xác định vùng để MATCH:
RIGHT($C$16:$E$16,2) +0 sẽ tạo vùng {10,20,31}
* Vùng này tăng dần nên MATCH gần đúng với tham số 1:
MATCH(DAY(D5),RIGHT($C$16:$E$16,2)+0,1)
* Không muốn Ctrl-shift-enter nên lồng vùng vào trong INDEX:
MATCH(DAY(D5),INDEX(RIGHT($C$16:$E$16,2)+0,),1)
* Bẫy lỗi cho ngày <10, trả về 1
IFERROR(MATCH(DAY(D5),INDEX(RIGHT($C$16:$E$16,2)+0,),1)+1,1)
Đây chính là tham số cột của INDEX
Hzzzz,Hey there bebo021999,
View attachment 187356
Công thức của bạn hoàn toàn chính xác
K5= INDEX($C$17:$E$21,MATCH(E5,$B$17:$B$21,0),IFERROR(MATCH(DAY(D5),INDEX(RIGHT($C$16:$E$16,2)+0,),1)+1,1))
Có điều mình không hiểu lắm hàm Right(). Nếu mình nhớ không lầm thì hàm Right() dùng để cắt chuỗi từ phải sang mà. Sao lại dùng ở bài này? Mình không hiểu cho lắm, nếu bạn thấy không phiền lòng, xin làm ơn giải thích dùm mình. Mình chân thành cảm ơn
Mình có check RIGHT($C$16:$E$16,2)=#VALUE!???
RIGHT($C$16:$E$16,2)+0=#VALUE!???
→ Rốt cuộc chẳng hiểu Right()+0 là ý nghĩa gì???
Vì sao cuối hàm Right() là +0 vậy? Mình biết là không có +0 thì sẽ không đúng nhưng mục đích của +0 là gì vậy bạn?
Vì hàm Right() tạo ra mảng {10,20,31} nên Excel sẽ cho kết quả giá trị lỗi từ ngày 1-10 nên mình phải đặt công thức để bẫy lỗi trong khoảng này phải không vậy? Chân thành cảm ơn sự giải thích của bạn.
= IFERROR(MATCH(DAY(D5),INDEX(RIGHT($C$16:$E$16,2)+0,),1)+1,1)
Mình hiểu là nếu Ngày Bay rơi trong khoảng 10-20 thì hàm Right()=1 nên phải +1 để dò cột thứ 2, tương tự vậy cho Ngày Bay rơi trong khoảng 20-31, còn nếu Ngày Bay không rơi trong khoảng nào hết tức không rơi trong khoảng 10-20 & 20-31 thì sẽ dò cột 1. Mình hiểu vậy có đúng không vậy bạn? Cám ơn bạn đã bỏ công & thời giờ giải thích cho mình, thiệt ngại quá!
Thật ra là mình chưa học công thức Mảng nên nếu bạn giải thích cho mình thì chắc sẽ làm khó cho bạn rồi.
Chúc bạn 1 tuần mới tràn đầy năng lượng & niềm vui.