- Tư duy không bằng @leoheocon = @Ekerula = @excel_lv1.5
- Kiến thức quản lý dữ liệu, anh không bằng bác @SA_DQ
- Thông hiểu sâu căn cơ, và lý luận tận nguồn và quảng bác, anh không bằng anh @VetMini và 1 anh nữa
- Thông thạo cả VBA và các hàm, vận dụng công thức mảng đúng nơi đúng chỗ, cùng tìm ra các quy luật số, anh không bằng anh @HieuCD, anh @NDU, anh @huuthang_bd, anh @Phuocam
- Tính cẩn thận và tinh tế trong các kết quả, và ứng biến thích nghi với Google Sheet anh không bằng @befaint
- "Ham học, chọc khuấy" không bằng mấy em.
- Còn nhiều cái không bằng nữa v.v.
Chỉ mỗi một tính cách mà anh biết mình có là thích phân tích vấn đề, rồi tổng hợp để ghi nhớ những gì mình cho là có ích cho bản thân. Nên chả có gì đáng gọi là tuyệt vời cả em. Anh em mình "Đồng hội đồng thuyền".
Như lời hứa, anh ghi giải thích dưới đây với hy vọng không gây nhàm chán với mấy em:
Có hai cách tính về đoạn thời gian:
Ví dụ: như bài cho đoạn đầu tiên theo mốc quy định là bắt đầu (BĐ) 7:00, Kết thúc (KT) 10:00
View attachment 284527
1/ Cách trực tiếp: Số giờ hoạt động (GHĐ) = (KT) trừ ((BĐ)
Cách này là cách được dùng thường xuyên vì dễ thấy ngay kết quả: 10:00 - 7:00 = 3 tiếng
Trường hợp nếu Giờ bắt đầu thực tế (BĐtt) hoặc/và Giờ kết thúc thực tế (KTtt) khác (tức <>) giờ (BĐ) (KT) quy định, thường ta dùng hàm MEDIAN() để tính số trung vị.
Ví dụ 1: Giờ (BĐtt) lúc 8h, (KTtt) lúc 10h
View attachment 284529
- (GHĐ) = MEDIAN( BĐ, KT, KTtt) - MEDIAN( BĐ, KT, BĐtt)
- (GHĐ) = MEDIAN( 7, 10, 10) - MEDIAN( 7, 10, 8)
- (GHĐ) = 10 - 8 = 2
Ví dụ 2: Giờ (BĐtt) lúc 7h30, (KTtt) lúc 9h
- (GHĐ) = MEDIAN( BĐ, KT, KTtt) - MEDIAN( BĐ, KT, BĐtt)
- (GHĐ) = MEDIAN( 7, 10, 9) - MEDIAN( 7, 10, 7.5 )
- (GHĐ) = 9 - 7.5 = 1.5
Với hai mốc cố định trong hàm MEDIAN() là (BĐ): 7h và (KT): 10h, nên nếu giờ BĐtt và KTtt khác với mốc giờ quy định:
- Nếu giờ BĐtt < BĐ thì lấy BĐ
- Nếu giờ BĐtt > BĐ thì lấy BĐtt
- Nếu giờ KTtt < KT thì lấy KTtt
- Nếu giờ KTtt > KT thì lấy KT
Cách này dễ sử dụng và công thức gọn gàng với trường hợp 1 đoạn thời gian, nhưng nếu phát sinh những đoạn thời gian nhỏ loại bỏ không cần tính đến, như bài trên đây, thì phải dùng công thức MEDIAN() nối dài cho từng đoạn vì phải xác định mốc cố định cho từng đoạn, hoặc dùng rất nhiều điều kiện để lọc, nên khi chỉnh sửa, thay đổi hoặc thêm bớt mốc quy định sẽ gặp không ít khó khăn.
2/ Cách gián tiếp: Số giờ hoạt động (GHĐ) = Lọc điều kiện [ (KTtt) - (BĐ) ] - Lọc điều kiện [ (BĐtt) - (BĐ) ]
View attachment 284530
Ví dụ 1: Giờ (BĐtt) lúc 8h, (KTtt) lúc 10h
- (GHĐ) = Lọc ĐK[ (KTtt) - (BĐ) ] - Lọc ĐK[ (BĐtt) - (BĐ) ]
- (GHĐ) = [ 10 - 7 ] - [ 8 - 7 ]
- (GHĐ) = 3 - 1 = 2
Ví dụ 2: Giờ (BĐtt) lúc 7h30, (KTtt) lúc 9h
- (GHĐ) = Lọc ĐK[ (KTtt) - (BĐ) ] - Lọc ĐK[ (BĐtt) - (BĐ) ]
- (GHĐ) = [ 9 - 7 ] - [ 7.5 - 7 ]
- (GHĐ) = 2 - 0.5 = 1.5
Cách này chỉ lấy giờ BĐ làm mốc để so cho cả hai giờ BĐtt và KTtt, cùng với "
Điều kiện lọc" cho cả hai vế
[ (KTtt) - (BĐ) ] và
[ (BĐtt) - (BĐ) ] , như sau:
- Nếu kết quả là số âm: tức KTtt<BĐ hoặc BĐtt<BĐ, thì sẽ ĐIỀU CHỈNH bằng giá trị 0.
- Nếu kết quả nhỏ hơn Lượng thời gian quy định (tức = (KT) - (BĐ)), và lớn hơn hoặc bằng 0: thì giữ nguyên giá trị của kết quả.
- Nếu kết quả lớn hơn Lượng thời gian quy định (tức = (KT) - (BĐ)): thì sẽ ĐIỀU CHỈNH thành giá trị của "Lượng thời gian quy định".
Thực ra, nó đã ẩn 1 bài toán là Lượng thời gian quy định = (KT) - (BĐ) trong điều kiện lọc bằng con số đã tính toán trước, như ví dụ trên ta có điều kiện:
1/ x<0: chỉnh thành 0
2/ 0<= x < (10-7=3): giữ nguyên giá trị
3/ x> 3: chỉnh thành 3
VD1: cho BĐtt: 4h và KTtt 6h30, khi trừ cho (BĐ): 7h đều cho số âm, nên theo điều kiện lọc 1 nó sẽ bị chỉnh thành 0,
=> (GHĐ) = 0 - 0 = 0
VD2: cho BĐtt: 4h và KTtt 9h30, nên => (GHĐ) = [9.5 - 7] - [4 - 7] = [2.5] - [-3] = 2.5 - 0 = 2.5
* [9.5 - 7] = 2.5, theo điều kiện lọc 2 ở trên => 2.5 < 3, nên nó giữ nguyên giá trị 2.5
VD3: cho BĐtt: 9h và KTtt 13h, nên => (GHĐ) = [13 - 7] - [9 - 7] = [6] - 2
* [13 - 7] = 6, theo điều kiện lọc 3 ở trên=> 6 > 3, nên nó bị chỉnh thành giá trị 3
* [9 - 7] = 2, theo điều kiện lọc 2 ở trên=> 2 < 3, nên nó giữ nguyên giá trị 2
VD4: cho BĐtt: 4h và KTtt 13h, nên => (GHĐ) = [13 - 7] - [4 - 7] = [6] - [-3] = 3 - 0 = 3
VD5: cho BĐtt: 11h và KTtt 13h, nên => (GHĐ) = [13 - 7] - [11 - 7] = [6] - [4] = 3 - 3 = 0
Để ý ta thấy:
1/ Với điều kiện 1: chỉnh thành số 0, ta loại bỏ tất cả các giá trị dù là giờ BĐtt hay KTtt mà < giờ BĐ quy định, tức không cần quan tâm.
2/ Với điều kiện 2: giữ nguyên giá trị kết quả, tức giờ BĐtt hay KTtt nằm trong mốc quy định.
3/ Với điều kiện 3: chỉnh thành Lượng thời gian quy định (3h), ta loại bỏ tất cả các giá trị dù là giờ BĐtt hay KTtt mà > giờ BĐ quy định, tức quy về mốc chuẩn: (KT)-(BĐ).
Cái hay của cách này là tìm "
Quy tắc tính toán chung" cho các đoạn thời gian nhỏ khác nhau cần tính, và không cần quan tâm đến các thời đoạn không cần tính đến (như thời gian nghỉ giải lao, thời gian ăn cơm trưa, cơm chiều v.v..). Tức chỉ cần xác định các Mốc đầu (BĐ) của các đoạn thời gian, và với 3 điều kiện lọc có định sẵn "Lượng thời gian quy định" cho từng đoạn, ta có thể tính toán ra Giờ hoạt động trên từng đoạn, rồi cộng các đoạn lại với nhau.
View attachment 284531
Xem thêm Sheet "Vidu Thuyetminh" file đính kèm.
Chúc anh em ngày vui vẻ và tốt lành
Thân