giúp e tính cột Giá vé với ạ, em cảm ơn mọi người

Liên hệ QC

mt00084431

Thành viên mới
Tham gia
9/10/09
Bài viết
1
Được thích
0
. .
 

File đính kèm

  • bao cao.xlsx
    9.4 KB · Đọc: 259
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!
 
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à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à!
 
Lần chỉnh sửa cuối:
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.
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.
Công thức tại E4=VLOOKUP(LEFT(C4;2);$A$15:$E$17;MATCH(RIGHT(C4;1);$C$14:$E$14;0)+2;0)
 
hihi, công thức chính xác là
E4=VLOOKUP(LEFT(C4,2),$A$15:$E$17,MATCH(RIGHT(C4,1),$C$14:$E$14,0)+2,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!
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 !
 

File đính kèm

  • Copy báo cáo.xlsx
    11 KB · Đọc: 36
Lần chỉnh sửa cuối:
Công thức của anh hay lắm. Cảm ơn anh nhiều!
 
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 !
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.
 
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
upload_2017-11-27_12-28-57.png
Bảng 2
upload_2017-11-27_12-22-27.png
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.


 

File đính kèm

  • Air Fares.xls
    53.5 KB · Đọc: 45
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))
Bạn đúng là quá giỏi luôn hpkhuong, vậy mà mình nghĩ ngợi mãi không ra. +-+-+-++-+-+-++-+-+-+
Đúng là quá “chuối”. Hy vọng sau này bạn tiếp tục giúp mình hen.Mình chân thành cảm ơn.:)
Ừa, mình cũng biết là mình còn “lơ tơ mơ” hàm Match(). Biết sao được, tại mình vừa đắc cử chức chủ tịch hội đồng ban quản trị những người “chuối” Excel mà, chắc nhiệm kỳ của mình còn lâu lắm bạn ơi, không lẽ mới đắc cử mà từ chức thì coi sao được, để mình “vơ vét” một mớ Excel rồi từ chức sau vậy. Fun only! (đùa thôi!)
Àh, mà bạn là thần đồng đó nha, mới tốt nghiệp mẫu giáo mà đã “nói chuyện” với Excel rồi, ấn tượng lắm đó nghe, vậy có nghĩa là bạn học Excel từ lúc còn trong bụng mẹ à, đúng là thần đồng có cách học riêng của thần đồng ấy nhỉ. Cho mình “xí xọn” xếp hàng xin chữ ký của thiên tài nghe, hông chừng sau này bán đấu giá cũng được khối tiền ấy nhỉ. :D
Vậy tính ra là mình “cụ hơn” bạn nhiều lắm à nha, vì mình tốt nghiệp mẫu giáo đã hơn vài chục năm rùi, vậy là “Tre chưa già mà măng đã mọc rồi sao”. :(

Chúc bạn luôn vui & hạnh phúc.

 
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.


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)
 
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
 
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)
Chào bạn TheThienChu,
Mình chỉ mới có học hàm Index() kết hợp với 2 hàm Match() thôi, chưa học Index() kết hợp với Int() nên không hiểu công thức cho lắm.
Mình hiểu là Int(Day(D5)/10+1) là lấy giá trị nguyên của Day(D5)/10+1 nhưng mình không hiểu sao bạn lại làm công thức như vậy. Nếu bạn thấy không phiền lòng, xin bạn giải thích công thức dùm mình. Mình chân thành cảm ơn.:)
Mình không hiểu từ khúc dò cột của Index(……,INT(DAY(D5)/10)+1))+-+-+-++-+-+-++-+-+-+

Chúc bạn luôn vui & hạnh phúc.


 
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
Hey there bebo021999,
upload_2017-11-28_12-49-39.png
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() +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.



 
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() +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.
Hzzzz,
Cố tình viết chi tiết khi trả lời mà vẫn chưa dò đúng điểm G của nàng!
Làm lại nào.
Ba ô điều kiện C16-E16 có điểm chung là 2 ký tự cuối hiển thị mốc 10,20,31. Nếu dùng chuỗi "Ngày 1 đến 10", "Ngày 11 đến 20","Ngày 21 đến 31", thì dài, nên tận dụng 2 ký tự cuối để phân biệt.
RIGHT(C16:E16,2) trả về chuỗi, muốn đổi về số thì +0, --RIGHT hoặc *1,... (Biết rồi mà)
Nếu RIGHT(C16,2) khi enter sẽ ra là 10 vì nó là giá trị đơn. Còn RIGHT(C16:E16,2) là yêu cầu Excel làm 3 phép tính và trả ra 3 kết quả, vậy thì thể hiện ra màn hình thế nào để ra vùng {10,20,31}? Nó bối rối nên ra đại #VALUE. Muốn xem thì F2/F9 sẽ thấy kết quả thực sự
Vùng {10,20,31} tăng dần nên dùng MATCH(X,vùng,1) để lấy giá trị. Nếu X rơi vào khoảng nào thì lấy giá trị nhỏ hơn lớn nhất.
X=11, trả về 1, cộng thêm 1 thành cột thứ 2
X=0, trả về lỗi, dùng IFERROR trả về 1 (cột 1)
You should be satisfy now:p
 
Web KT

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

Back
Top Bottom