Hỏi về hàm tìm kiếm kết quả mà thời điểm hiện tại sắp đến? (1 người xem)

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

gakon_Office

Nguyễn Hoàng Nhi
Tham gia
18/9/11
Bài viết
176
Được thích
26
Xin chào GPE!
Câu hỏi em đã để cho file kèm cho mọi người dễ hình dung, Mọi người xem file đính kèm và giúp em với ạ! Xin cám ơn!
 

File đính kèm

GPE xem có cách nào giúp em bài trên với ạ!
 
Ý của em là thế này ạ!
Em có một bảng dữ liệu bào gồm một cột ngày và một cột giờ như file ví dụ như file ở trên.
và em sẽ nhập số ngày & số giờ trong tương lai vào 2 cột này.
Em muốn làm thế nào để tìm được "số giờ" trong tương lai mà gần nhất (chuẩn bị đến) so với thời điểm hiện tại ấy ạ!
----------------
ví dụ đồng hồ hiện tại bây giờ là 7:10 PM
Nếu em nhập bên cột ngày là:09/03/2013 % cột giờ là 8:02PM
thì công thức sẽ trả về giá : 8:02PM (khi mà cột giờ không có dữ liệu trong khoảng từ 7:10 đến 8:02PM) tất nhiên điều kiện tìm giờ phải là trong ngày.. khác ngày không xét!

Xin cám ơn!
 
Lần chỉnh sửa cuối:
Ý của em là thế này ạ!
Em có một bảng dữ liệu bào gồm một cột ngày và một cột giờ như file ví dụ như file ở trên.
và em sẽ nhập số ngày & số giờ trong tương lai vào 2 cột này.
Em muốn làm thế nào để tìm được "số giờ" trong tương lai mà gần nhất (chuẩn bị đến) so với thời điểm hiện tại ấy ạ!
----------------
ví dụ đồng hồ hiện tại bây giờ là 7:10 PM
Nếu em nhập bên cột ngày là:09/03/2013 % cột giờ là 8:02PM
thì công thức sẽ trả về giá : 8:02PM (khi mà cột giờ không có dữ liệu trong khoảng từ 7:10 đến 8:02PM) tất nhiên điều kiện tìm giờ phải là trong ngày.. khác ngày không xét!

Xin cám ơn!

Tôi cố tìm từ điển "Việt - Việt" để dịch + đoán, vẫn không hiểu bạn muốn gì qua nhiều lần giải thích. Thôi bó tay.
Ai biết dịch dùm không?
 
Tôi cố tìm từ điển "Việt - Việt" để dịch + đoán, vẫn không hiểu bạn muốn gì qua nhiều lần giải thích. Thôi bó tay.
Ai biết dịch dùm không?
Hiểu đơn giản là thế này: Trong một danh sách các thời điểm (xem trong file), tìm ra thời điểm trong ngày lớn hơn hoặc bằng (>=) và gần nhất với thời điểm hiện tại (=NOW()).

Ví dụ: Trong ngày 9/3/2013 có các thời điểm đã nhập vào: 6:00 PM, 7:00 PM, 8:00 PM, 9:15 PM, 10:45 PM, 11:00 PM, 11:20 PM, 11:50 PM (các thời điểm này được nhập ngẫu nhiên, không theo thứ tự), và thời điểm bây giờ là 10:50 PM ngày 9/3/2013. Khi đó kết quả của công thức phải là 11:00 PM vì đây là thời điểm tương lai gần nhất với thời điểm hiện tại.

Cũng xin nói thêm là nếu các thời điểm đã nhập này nếu được sắp xếp theo một thứ tự (tăng hoặc giảm) thì có lẽ việc xây dựng công thức sẽ dễ dàng hơn.
 
Lần chỉnh sửa cuối:
Dùng công thức này thử xem:
Mã:
=MIN(IF(G7:G14=TODAY(),H7:H14-MOD(NOW(),TODAY()),""))+MOD(NOW(),TODAY())
Kết thúc bằng Ctrl-Shift-Enter
 
Dùng công thức này thử xem:
Mã:
=MIN(IF(G7:G14=TODAY(),H7:H14-MOD(NOW(),TODAY()),""))+MOD(NOW(),TODAY())
Kết thúc bằng Ctrl-Shift-Enter
Có vẻ chưa ổn anh bebo à, em thử trong file thấy kết quả chưa đúng.
Mà cái chỗ MOD(NOW(),TODAY()), sao không phải là MOD(NOW(),1) cho gọn nhỉ?!
 
OK. Thay bằng 1.
Chưa đúng chỗ nào nhỉ?
Chỉ xét các ô giờ cùng ngày hôm nay (IF(G7:G14=TODAY()...),
Lấy hiệu cột giờ và giờ hiện tại, sau đó lấy MIN.
MIN cộng ngược lại với giờ hiện tại thì ra kết quả, đúng không?
Mã:
=MIN(IF(G7:G14=TODAY(),H7:H14-MOD(NOW(),1),""))+MOD(NOW(),1)
 
OK. Thay bằng 1.
Chưa đúng chỗ nào nhỉ?
Chỉ xét các ô giờ cùng ngày hôm nay (IF(G7:G14=TODAY()...),
Lấy hiệu cột giờ và giờ hiện tại, sau đó lấy MIN.
MIN cộng ngược lại với giờ hiện tại thì ra kết quả, đúng không?
Mã:
=MIN(IF(G7:G14=TODAY(),H7:H14-MOD(NOW(),1),""))+MOD(NOW(),1)
Anh xem trong file sẽ rõ, với thời điểm hiện tại theo máy tính em là 11:43 PM ngày 9/3/2013 thì kết quả phải là 11:50 PM, nhưng công thức lại cho ra kết quả là 6:50 AM.
 

File đính kèm

Anh xem trong file sẽ rõ, với thời điểm hiện tại theo máy tính em là 11:43 PM ngày 9/3/2013 thì kết quả phải là 11:50 PM, nhưng công thức lại cho ra kết quả là 6:50 AM.

Vì công thức lấy Min của cả những kết quả âm sau khi trừ. Kết quả của toàn bộ công thức sẽ là giờ sớm nhất của cùng ngày. Và giờ đó là quá khứ.
 
Lần chỉnh sửa cuối:
À há, tìm ra rồi:
Mã:
=MIN(IF((G7:G20=TODAY())*(G7:G20+H7:H20>=NOW()),H7:H20,""))
Kết thúc bởi Ctrl+Shift+Enter.
 
Theo cách giải thích của anh Nghĩa Phúc thì em nghĩ phải như thế này
Đặt Name
1) Area
Mã:
=IF(Sheet1!$G$7:$G$20=TODAY(),Sheet1!$H$7:$H$20,"")
2) Tmp
Mã:
=ROW(INDIRECT("1:"&COUNT(Area)))
3) Res
Mã:
=LARGE(Area,Tmp)
4) Time
Mã:
=TIME(HOUR(NOW()),MINUTE(NOW()),SECOND(NOW()))
Cuối cùng là công thức
Mã:
=INDEX(Res,MATCH(Time,Res,-1))
 

File đính kèm

Theo cách giải thích của anh Nghĩa Phúc thì em nghĩ phải như thế này
.......................................................
Cách này lợi ở chỗ công thức cuối cùng không cần Ctrl+Shift+Enter, nhưng có cảm giác nó hơi cao siêu, nhiều đối tượng trung gian.
Còn công thức ở bài #12 của mình thì hơi phiền phức vì nó là công thức mảng, nhưng có vẻ gọn gàng và dễ hiểu hơn. (hic, trình độ chỉ có bấy nhiêu thôi)

Ngoài ra, name Time có thể cải tiến như thế này hình như tính toán nhanh hơn vì chỉ dùng 2 hàm và 1 phép nhân, so với dùng 5 hàm như ở trên: =TEXT(NOW(),"HH:mm:ss")*1
 
Tại thời điểm này em Test với công thức của anh sao chưa cho kết quả đúng. Với dữ liệu của bài #13 thì kế quả đúng phải là: 5:00:00 AM, còn công thức của anh cho kết quả 12:00:00 AM
Không biết em test có sai chỗ nào không?

Mặt khác nếu không có ngày hiện tại trong List thì kết quả cũng sai anh à.
 
Tại thời điểm này em Test với công thức của anh sao chưa cho kết quả đúng. Với dữ liệu của bài #13 thì kế quả đúng phải là: 5:00:00 AM, còn công thức của anh cho kết quả 12:00:00 AM
Không biết em test có sai chỗ nào không?

Mặt khác nếu không có ngày hiện tại trong List thì kết quả cũng sai anh à.
À, mình hiểu rồi: Vì trong trường hợp không có thời điểm nào thỏa mãn điều kiện thì mảng này gồm toàn bộ là chuỗi rỗng, do đó kết quả của MIN bằng 0, và con số 12:00:00 AM chính là con số 0 này đấy.

Sửa lại: Thêm 1 bẫy lỗi, nếu có thời điểm thỏa mãn thì trả về kết quả, ngược lại thì trả về chuỗi rỗng.
Mã:
=IF(SUMPRODUCT((G7:G20=TODAY())*(G7:G20+H7:H20>=NOW())),MIN(IF((G7:G20=TODAY())*(G7:G20+H7:H20>=NOW()),H7:H20,"")),"")
 
Hiểu đơn giản là thế này: Trong một danh sách các thời điểm (xem trong file), tìm ra thời điểm trong ngày lớn hơn hoặc bằng (>=) và gần nhất với thời điểm hiện tại (=NOW()).

Ví dụ: Trong ngày 9/3/2013 có các thời điểm đã nhập vào: 6:00 PM, 7:00 PM, 8:00 PM, 9:15 PM, 10:45 PM, 11:00 PM, 11:20 PM, 11:50 PM (các thời điểm này được nhập ngẫu nhiên, không theo thứ tự), và thời điểm bây giờ là 10:50 PM ngày 9/3/2013. Khi đó kết quả của công thức phải là 11:00 PM vì đây là thời điểm tương lai gần nhất với thời điểm hiện tại.

Cũng xin nói thêm là nếu các thời điểm đã nhập này nếu được sắp xếp theo một thứ tự (tăng hoặc giảm) thì có lẽ việc xây dựng công thức sẽ dễ dàng hơn.

Xin cảm ơn GPE! Đây đúng là những gì em muốn nói.
 

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

Back
Top Bottom