Bài toán phát hiện trùng lịch(đưa bài giúp bạn).

Liên hệ QC

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia
17/4/16
Bài viết
2,701
Được thích
2,433
Giới tính
Nam
Nghề nghiệp
Nhân viên kỹ thuật in ấn
Bài toán phát hiện trùng lịch
Chào mọi người. Hôm nay e lại có bài hay ho đây.

Tình huống: sếp Cty ABC có 4 cô nhân viên tên Xuân, Hạ, Thu, Đông.
Và sẽ phân chia kế hoạch các job (ở cột F) cho các cô.
Bắt đầu job là cột B và kết thúc job ở cột C
nếu lịch của 1 cô nào đó bị trùng bất kỳ một lịch nào đã được phân công trước cho cổ ở các dòng trước đó. Thì cột trạng thái E sẽ báo FALSE. Chồng lịch 1 ngày cũng FALSE.

Yêu cầu: lập công thức cho cột E, từ ô E4 trở xuống, kết quả mẫu như đã có sẵn.

Phương pháp: như cũ, hàm có sẵn, vba, UDF hay bất cứ phương án nào miễn ra được kết quả là ok hết. Không khuyến khích dò bằng mắt vì ko dùng kiểu đó được khi hết nghỉ dịch :)))

Thực sự xin lỗi vì e online bằng điện thoại nên ko up file được. Nhưng số liệu cũng dễ fake lại nên mong mọi người thông cảm.
Cám ơn mọi người nhiều!
FB_IMG_1586324551781.jpg
 
Cứ gặp mấy bài tập kiểu này thì lại nhớ về hồi học lớp 11 :(:(:(
Thầy/Cô cho hằng trăm bài tập hắc búa về lượng giác và nguyên hàm. Làm sặc gạch, bỏ bê cả các môn học khác.
Đã đành là nó cũng giúp ích cho khả năng Toán của mình, nhưng cái lợi thì nhỏ, cái mất thì giờ và trí não hoàn toàn không được đền bù đến 10%.
Những thì giờ và năng lượng đó đi học kỹ năng sống tốt hơn.

Trở lại vấn đề, thay vì phải tìm những công thức khủng để hoàn tất bài tập, học sinh đáng lẽ phải được học cách trình bày và diễn giải bảng tính.
 
Bài toán phát hiện trùng lịch
Chào mọi người. Hôm nay e lại có bài hay ho đây.

Tình huống: sếp Cty ABC có 4 cô nhân viên tên Xuân, Hạ, Thu, Đông.
Và sẽ phân chia kế hoạch các job (ở cột F) cho các cô.
Bắt đầu job là cột B và kết thúc job ở cột C
nếu lịch của 1 cô nào đó bị trùng bất kỳ một lịch nào đã được phân công trước cho cổ ở các dòng trước đó. Thì cột trạng thái E sẽ báo FALSE. Chồng lịch 1 ngày cũng FALSE.

Yêu cầu: lập công thức cho cột E, từ ô E4 trở xuống, kết quả mẫu như đã có sẵn.

Phương pháp: như cũ, hàm có sẵn, vba, UDF hay bất cứ phương án nào miễn ra được kết quả là ok hết. Không khuyến khích dò bằng mắt vì ko dùng kiểu đó được khi hết nghỉ dịch :)))

Thực sự xin lỗi vì e online bằng điện thoại nên ko up file được. Nhưng số liệu cũng dễ fake lại nên mong mọi người thông cảm.
Cám ơn mọi người nhiều!
View attachment 235064
Bài này nhớ làm lâu rồi, mà quên cách, bạn thử cách này xem:
Mã:
=COUNT(MATCH({1,2,3},MMULT(IFERROR(MATCH($B$1:C1,B2:C2+{0,0.5})/($D$1:D1=D2),),{1;1}),))=0
Ctrl+Shift+Enter
 

File đính kèm

  • vd.xlsx
    9.4 KB · Đọc: 19
Không biết côt "F" có "dính líu" gì tới đề bài không chứ nếu chỉ 3 cột "B, C, D" thì dùng một em " Đít to" dụ một hồi là chúng nó khai hết thằng nào trùng thằng nào không
Thân
 
Lô gic bài này cần được diễn tả kỹ hơn:
1. nếu 2 thằng có thời gian lấn nhau thì thằng nào được tính ưu tiên (true)? thằng xếp trước hay thàng có thời gian bắt đầu trước? Nếu thời gian bảo đảm đã sắp xếp thì câu hỏi này không tính.
2. nếu ở dòng X tôi được một False (tức là bị dính vào 1 A trước nó) thì ở dòng Y tôi có tính X không? Y có thể không dính với A.
 
Lô gic bài này cần được diễn tả kỹ hơn:
1. nếu 2 thằng có thời gian lấn nhau thì thằng nào được tính ưu tiên (true)? thằng xếp trước hay thàng có thời gian bắt đầu trước? Nếu thời gian bảo đảm đã sắp xếp thì câu hỏi này không tính.
2. nếu ở dòng X tôi được một False (tức là bị dính vào 1 A trước nó) thì ở dòng Y tôi có tính X không? Y có thể không dính với A.
chúng ta cứ coi như từ bắt đầu đến kết thúc là 1 khoảng thời gian.
Nếu 1 người có 2 khoảng thời gian trùng nhau thì sẽ báo FALSE.
trong bài toán này thì khoảng thời gian lúc bạn nhập nó sẽ dò xem có bị trùng vào phía trên hay ko để báo.
Dòng trên đã TRUE rồi thì nếu dòng dưới có trùng nó, nó vẫn TRUE, chỉ có dưới bọ FALSE thôi.
Kiểu ưu tiên từ trên xuống .
Vd Stt5 đang bị trùng với Stt1 cùng cô Xuân. Và tương tự stt6 đang trùng với stt4 của cô Hạ nên báo FALSE
 
Theo tôi thằng trước TRUE. Vì đó là "quyết định" đang / đã có hiệu lực. Thằng sau FALSE.

Hoặc là bài đơn giản hoặc phức tạp còn tôi nhầm lẫn.
Thôi cứ gửi lên.
Nhìn dữ liệu thấy từ dòng 3, vậy công thức cho E3
Mã:
=SUMPRODUCT(((C3<B$2:B2)+(B3>C$2:C2))*(D$2:D2=D3))=COUNTIF(D$2:D2,D3)
 
Bài #7 đã trả lời cho câu hỏi 1.
Nhưng vẫn còn câu hỏi 2:
01/04/2020 - 10/04/2020 : Đông : True
06/04/2020 - 20/04/2020 : Đông : False
15/04/2020 - 25/04/2020 : Đông : True/False? Lưu ý là nếu dòng trên bất hiệu lực thì dòng này đâu có chạm ai.
 
Bài #7 đã trả lời cho câu hỏi 1.
Nhưng vẫn còn câu hỏi 2:
01/04/2020 - 10/04/2020 : Đông : True
06/04/2020 - 20/04/2020 : Đông : False
15/04/2020 - 25/04/2020 : Đông : True/False? Lưu ý là nếu dòng trên bất hiệu lực thì dòng này đâu có chạm ai.
Do chủ thớt không nói rõ. Nhưng theo lôgíc đúng là phải thế. Nếu dòng đã FALSE thì khi xét dòng tiếp theo thì phải lờ dòng FALSE đi, coi như không nhìn thấy, coi như nó không tồn tại.
Mã:
=SUMPRODUCT(((C3<B$2:B2)+(B3>C$2:C2))*(D$2:D2=D3)*(E$2:E2=TRUE))=COUNTIFS(D$2:D2,D3,E$2:E2,TRUE)
 
Công thức giải bài toán thử thách trình độ quyền biến của người giải.
Diễn giải lô gic của bài toán thử thách trình độ kiến thức của người ra bài.
 
Bài toán phát hiện trùng lịch
Chào mọi người. Hôm nay e lại có bài hay ho đây.

Tình huống: sếp Cty ABC có 4 cô nhân viên tên Xuân, Hạ, Thu, Đông.
Và sẽ phân chia kế hoạch các job (ở cột F) cho các cô.
Bắt đầu job là cột B và kết thúc job ở cột C
nếu lịch của 1 cô nào đó bị trùng bất kỳ một lịch nào đã được phân công trước cho cổ ở các dòng trước đó. Thì cột trạng thái E sẽ báo FALSE. Chồng lịch 1 ngày cũng FALSE.

Yêu cầu: lập công thức cho cột E, từ ô E4 trở xuống, kết quả mẫu như đã có sẵn.

Phương pháp: như cũ, hàm có sẵn, vba, UDF hay bất cứ phương án nào miễn ra được kết quả là ok hết. Không khuyến khích dò bằng mắt vì ko dùng kiểu đó được khi hết nghỉ dịch :)))

Thực sự xin lỗi vì e online bằng điện thoại nên ko up file được. Nhưng số liệu cũng dễ fake lại nên mong mọi người thông cảm.
Cám ơn mọi người nhiều!
View attachment 235064
Đề tài này là tìm giao của hai khoảng thời gian, anh nhớ đã có người hỏi trước đây lâu rồi em (xem đoạn bôi đen là công thức xét có hay không đoạn giao của hai khoảng thời gian)

=COUNT(1/(1-(B2>C$1:C1)-(C2<B$1:B1))/(D2=D$1: D1))=0
Kết thúc bằng Ctrl+Shift+Enter.

Nếu dòng dữ liệu đã có kết quả false sẽ không tính cho dữ liệu phát sinh kế tiếp, thì thêm điều kiện:
=COUNT(1/(1-(B2>C$1:C1)-(C2<B$1:B1))/(D2=D$1: D1)/H$1:H1)=0

Chúc em ngày vui.
/-*+//-*+//-*+/
 

File đính kèm

  • vd (2).xlsx
    10.7 KB · Đọc: 8
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom