Lê Duy Thương
Cạo lấy gì gội (Dịch quá không gội được)
- Tham gia
- 14/10/09
- Bài viết
- 3,116
- Được thích
- 4,854


[Thongbao]e có bài tập phải lập bảng chấm công. E muốn hỏi anh là thế nào để đếm được khoảng.ví dụ trong ngày theo từng
giai đoạn.0h-5h,9h-12h.17h-20h.anh có cách nào giúp e đếm được khoảng làm việc( như ví dụ trên là 3 khoảng).e gửi kèm thêm file minh họa.Nếu phai dùng VBA anh hướng dẫn e đoạn code dk ko ạ.thank a[/Thongbao]
Bạn xem & kiểm theo hàm người dùng trong file

[Thongbao]Thế cho E hỏi thêm một tí ạ. Bây giờ (*)lại cần thêm điều kiện là : Số giờ làm được chia tối đa thành hai giai đoạn,một trong hai giai đoạn phải kéo dài ít nhất 6h,khoảng cách giữa hai giai đoạn làm liên tiếp không được quá 14h( nghĩa là các giờ nghỉ giữa hai giai đoạn làm việc không được vượt quá 14h).Em cam ơn[/Thongbao]
[*] 'Thêm' hay là tính cách khác?; Khi chỉ chia làm 2 giai đoạn là tối đa thì có vẻ như là 'Tính cách khác' rồi.
[**] Tốt nhất bạn đưa file khác hay trang tính khác bổ sung đi; Có như vậy khỏi mất thời gian của bạn & người khác.
(húc vui!

Dạ đúng cái này ui ạ.nhưng e thấy có chút trục trặc nhỏ.anh giúp e với ạ.Mô tả e gửi kèm ví dụ.Thank a[thongbao]Mô tả cụ thể e gửi kèm ví dụ dươi này đây ạ[/thongbao]

Đúng là còn thiếu; Bạn chép cái này đề lên toàn bộ hàm cũ là được. . . Nhưng e thấy có chút trục trặc nhỏ.anh giúp e với ạ.
Option Explicit
Function CountMax(Rng As Range, Optional Tri As String = "") As Byte
Dim Tmp As Byte: Dim Cls As Range
If Tri = "x" Then Tri = "X"
For Each Cls In Rng
If UCase$(Cls.Value) = Tri Then
Tmp = Tmp + 1
End If
If UCase$(Cls.Value) <> Tri Then
If CountMax < Tmp Then CountMax = Tmp
Tmp = 0
End If
Next Cls
If Tmp > CountMax Then CountMax = Tmp '<=|'
End Function

Dạ đúng code e cần ui.cảm ơn anh rất nhiều.chúc anh luôn mạnh khỏe và thành công trong cuộc sốngĐúng là còn thiếu; Bạn chép cái này đề lên toàn bộ hàm cũ là được
PHP:Option Explicit Function CountMax(Rng As Range, Optional Tri As String = "") As Byte Dim Tmp As Byte: Dim Cls As Range If Tri = "x" Then Tri = "X" For Each Cls In Rng If UCase$(Cls.Value) = Tri Then Tmp = Tmp + 1 End If If UCase$(Cls.Value) <> Tri Then If CountMax < Tmp Then CountMax = Tmp Tmp = 0 End If Next Cls If Tmp > CountMax Then CountMax = Tmp '<=|' End Function

a ơi đoạn code phần đếm giai đoạn e lại thấy có chút lỗi.a giúp e vớiDạ đúng code e cần ui.cảm ơn anh rất nhiều.chúc anh luôn mạnh khỏe và thành công trong cuộc sống

thế không có cách sửa trên Vba hả a ơi.Cảm ơn anhBạn thêm 1 cột trống vô trước cột [AX]; Sau đó sửa công thức tại [AY] lúc đó lại như sau:
=DemGD(B2:AX2)