Hàm tính giờ đến muộn và về sớm

Liên hệ QC

thuyhc09

Thành viên mới
Tham gia
12/4/09
Bài viết
6
Được thích
0
Bạn dùng hàm sau, nhớ đánh dấu vào Analysis Toolpak trong Tools\Add_ins


Em đang làm về nhân sự, công việc đang cần phải theo dõi đi muộn về sớm của CBCNV, các pác giúp em với. Dùng hàm nào để có thể lọc được những người đi muộn về sớm.
Thời gian làm việc được chia như sau:
Ca1 bắt đầu: 7h15 đến 18h30 (nghỉ ca 1h, tại Nhà máy)
Ca 2 bắt đầu: 12h45 đến 22h00
Ca 3 bắt đầu: 18h45 đến 6h30

em xin gủi file đính kèm là bảng nhập công thời gian mà em không có giải pháp.
moz-screenshot-3.jpg
 
Sao mình không thể xem hình của bạn vậy?

Bạn hãy cho biết sự lựa chọn của mình 1 trong 2 table sau, hay khác . .

(1)

A|B|C|D|E|F|G
TT | HTen | 01 | 02 | 03 | 04 | 05 . . .
1|Tran An |7h15-18h30|7h15-18h10|||12h45-22h01
5|Do Lan|12h50-22h30|12h30-22h20|||19h45-6h04
9|Le Do |19h45-6h04|19h50-6h00|||7h15-18h30

(2)

A|B|C|D|E|F|G
TT | HTen | 01 | 02 | 03 | 04 | 05 . . .
1|Tran An |7h15|7h15|||12h45
| |18h30|18h10|||22h01
5|Do Lan|12h50|12h30|||19h45
||22h30|22h20|||6h04
9|Le Do |19h45|19h50|||7h15
||6h04|6h00|||18h30
Nếu khác thì lập [table3] theo í bạn xem sao?
 
anh thử tham khảo files này xem có ứng dụng được gì không nhé
 

File đính kèm

  • Cham Cong.rar
    111.4 KB · Đọc: 1,334
Bạn hãy cho biết sự lựa chọn của mình 1 trong 2 table sau, hay khác . .

(1)

A|B|C|D|E|F|G
TT | HTen | 01 | 02 | 03 | 04 | 05 . . .
1|Tran An |7h15-18h30|7h15-18h10|||12h45-22h01
5|Do Lan|12h50-22h30|12h30-22h20|||19h45-6h04
9|Le Do |19h45-6h04|19h50-6h00|||7h15-18h30
(2)

A|B|C|D|E|F|G
TT | HTen | 01 | 02 | 03 | 04 | 05 . . .
1|Tran An |7h15|7h15|||12h45
| |18h30|18h10|||22h01
5|Do Lan|12h50|12h30|||19h45
||22h30|22h20|||6h04
9|Le Do |19h45|19h50|||7h15
||6h04|6h00|||18h30
Nếu khác thì lập [table3] theo í bạn xem sao?


Bảng của em giống y trang thẻ chấm công bằng giấy (dập bằng tay ý)
Dòng thì thể hiện: thứ tự, tên, ngày và giờ đến
Cột a thể hiện số TT; Cột B: tên; Cột C: giờ đến; Cột D: giờ về. (cột c và cột D là của 1 ngày)
Chú ý: 1 người chỉ làm 1 ca
Cả nhà thông cảm nhé, em đính kèm file mà nó không vào; table mãi không đc, buồn quá hic híc

A|B|C|D|E|F|G
TT | HTen | đến |vào| ra | vào | ra | vào . . .
1|Tran An |7h15|18h30||19h15|6h00|
2|Tran B |7h15|18h30||19h55|6h30|
3|Do Lan |12h50|22h30||7h15|18h30|
4|Do C |12h50|22h30||7h15|18h30|
5|Do D |12h45|22h30||7h15|18h30|
6|Do E |19h45|6h00||12h45|18h30|
7|Do E |19h55|6h00||12h45|18h30|
 
Vầy chứ gì?

A|B|C|D|E|F|G|H|I|J
TT | HTen | 01 v|01r| 02 v| 02 r| 03 | 04 | 05 v| 05 r. . .
1|Tran An |7h15|18h30|7h15|18h10|||12h45|22h01
5|Do Lan|12h50|22h30|12h30|22h20|||19h45|6h04
9|Le Do |19h45|6h04|19h50|6h00|||7h15|18h30

Có một số câu hỏi bổ sung, như sau:

Chổ bạn có làm nữa ngày không (nữa ca); & có làm thêm giờ không vậy?

Thứ bảy & chủ nhật thì ca kíp ra sao?

Bạn chấm công theo dạng 12H30 hay dạng 12:20:25 trong các ô vậy?

Bạn cần số lần trễ trong tháng hay cần tổng số thời gian trễ về sớm của 1 nhân viên hay cần cả hai chỉ tiêu này?

Chờ tin bạn!:-= --=0
 
Lần chỉnh sửa cuối:
đúng là bảng này ạ

ôi cảm ơn ChanhTQ@, đúng zậy đó ạ.
Trường hợp làm thêm giờ và làm nửa ca có ah
Thứ 7 và cn làm việc bình thường (1 tháng đc nghỉ 2 cn luân phiên nhau).
Em cần tìm cả 3 chỉ tiêu như anh nói để dùng trong việc sau:
- Hàng ngày em sẽ có thông báo số giờ đến trễ hoặc về sớm cho từng người
- Cuối tháng em sẽ tổng hợp số lần đi trễ/về sớm tronng tháng
Giờ trong bảng này em thể hiện bằng dấu hai chấm ạ vd: 12:50.
 
Mới có hai chỉ tiêu được xác định, còn 1 nữa hãy đợi đấy!

Xem thêm trong file đính kèm

Chưa biết thêm giờ bạn chấm làm sao; Nữa ca sẽ chấm ra răng nên chưa có tùy chọn đó;

Nếu không quy ước sẽ có sự chồng lấn giữa các ca => không chính xác


PHP:
Option Explicit
Const DC1 As Double = 0.302095:        Const CC1 As Double = 0.770833
Const DC2 As Double = 0.531262:         Const CC2 As Double = 0.91666
Const DC3 As Double = 0.781262:         Const CC3 As Double = 0.270833

Function TreGio(Rng As Range, Optional Loai As String = "L")
  Dim Clls As Range
  Dim Ngay As Byte, DiTre As Byte, VeSom As Byte
  Dim Ca1 As Boolean, Ca2 As Boolean, Ca3 As Boolean
  Dim Vo As Double, Ra As Double
   
  For Each Clls In Rng
    If Clls.Value <> "" Then
    Ngay = Ngay + 1
    If Ngay Mod 2 = 1 Then
      Vo = Clls.Value
      If Vo < 0.5 Then
        Ca1 = True
        If Vo <= DC1 Then
          Vo = DC1
        Else
          DiTre = DiTre + 1
        End If
      ElseIf Vo < 0.75 Then
        Ca2 = True
        If Vo <= DC2 Then
          Vo = DC2
        Else
          DiTre = DiTre + 1
        End If
      ElseIf Vo > 0.75 Then       '*'
        Ca3 = True
        If Vo <= DC3 Then
          Vo = DC3
        Else
          DiTre = DiTre + 1
        End If
      End If
    Else
      Ra = Clls.Value
      If Ca1 Then
        If Ra < CC1 Then VeSom = VeSom + 1
        Ca1 = Not Ca1
      ElseIf Ca2 Then
        If Ra < CC2 Then VeSom = VeSom + 1
        Ca2 = Not Ca2
      ElseIf Ca3 Then
        If Ra < CC3 Then VeSom = VeSom + 1
        Ca3 = Not Ca3
      End If
    End If
    End If
  Next Clls
  Select Case UCase$(Loai)
  Case "L"
    TreGio = Ngay
  Case "T"
    TreGio = DiTre
  Case "S"
    TreGio = VeSom
  End Select
End Function
 

File đính kèm

  • GPE.rar
    12.9 KB · Đọc: 405
Kết quả báo lỗi

Pác ChanhTQ@ ơi. tại sao em cứ nhấn con chuột vào kết quả của pác và enter là ô đó lại báo lỗi là #name? tức là sao hả pác ChanhTQ@. Em thấy hình như bác nhầm ở điều kiện rồi ạ, tức là ở điều kiện 1: số giờ vào trễ (tức là giờ vào thực tế - giờ vào chuẩn = giờ đến trễ, hoặc về sớm). Điều kiện 2: số giờ về (tức là giờ ra thực tế - giờ ra chuẩn = giờ về trễ hoặc giờ về sớm). Điều kiện 3: Tổng hợp số lần đi muộn về sớm của cả tháng hoặc pác thử thay lại điều kiện thứ 3 là: tổng số giờ đi muộn về sớm cả tháng, như vậy điều kiện 3 có lẽ đơn giản hơn pác ChanhTQ@ nhỉ.
Em đang vật vã với bảng này lắm, trong giây phút bồng bột em đã hứa với sếp là tháng này em không áp dụng được em sẽ bị trừ lương bây giờ hối hận quá :.,:.,
Em làm thủ công cũng ra hướng làm, nhưng khi áp dụng vào bảng thật thì lại báo lỗi valeu.. công thức của em ở cột vào sẽ là = if (V thực tế = V chuẩn;"đi đúng"; if(V thực tế < V chuẩn;"đi sớm";if(V thực tế > V chuẩn;"đi muộn";0))). Công thức ở cột ra cũng vậy em chỉ thay V thành R. Công thức ở cột giờ em làm: =if(Vchuẩn - V thực tế >0;V chuẩn - Vthực tế;IF(V chuẩn - V thực tế<0; Vthực tế - V chuẩn ;0))
tức là kết quả cho em dạng sau
Cột 1: Kết quả "đi sớm" hoặc "đi muộn" hoặc "đi đúng"
Cột 2: Kết quả số thời gian đi sớm hoặc đi muộn
Cột 3 và cột 4 cũng vậy nhưng thể hiện là về.
Pác góp ý cho em với nhe, mong hồi âm sơm nhất của bác.
 
Còn hàm mình viết hiện tại nó làm việc như sau

Ví dụ ca 1 (Ca sáng);

Khi vô cơ quan:
Anh/chị đến sớm hơn 7:15:00 (Chú í 2 số '00' ở cuối nha) cũng vẫn coi như anh đến đúng giờ; anh/chị chỉ cần bấm thẻ sau mốc nói trên, dù chỉ 1 giây nó cũng coi là 1 lần đến muộn;

Khi xuống ca:
Cứ về sớm hơn 18:30:00 thì nó tính anh/chị đó về sớm

Các ca khác cũng tương tự;

Tất nhiên, không th75c tế lắm, vì có lúc ùn tắc giao thông trước máy bấm thể sẽ oan mạng người lao động.
Tất nhiên vẫn viết để đề ra 1 thuật toán; Có vậy bạn mới có cái trao đổi lại với mình.

Mình cũng đang chờ ý kiến của bạn để chỉnh sửa, chứ thật ra mình đã viết xong cho thông số thứ ba rồi (viết theo í mình. & kinh nghiệm cho biết, sẽ phải sửa đổi & bổ sung, nên mình chưa đưa lên đó thôi!)

(*) Các ô nhập liệu phải/ chỉ là dạng thời gian mà thôi; Không phải chuỗi hay số bình thường; Bạn có thấy 6 Const mình khai báo trước chương trình không; Nó chính xác đến từng giây đó;

(*) Còn chuyện nhấn chuột vô hàm & {ENTER} nó báo Name#, thì bạn xem lại trong menu Insert có hàm tự tạo đó chưa?

Hay là lấy nguyên file mình đưa lên thử trước đi.
Hoặc gởi cho MOD phụ trách BOX đưa giúp file của bạn lên cho!

Kinh nghiệm bản thân: Làm việc với dữ liệu ngày giờ là khó lắm đó! Sao ư: Hai hệ thống tính, đếm thời gian dễ gây lẫn cái anh này ra chị kia lắm!
 
cách áp dụng thực tế

Lỗi #Name? xảy ra ở ngay trong file của ChanhTQ@ gủi mà. Em cứ đưa con trỏ vào và enter là có lỗi này. Em cũng định dùng thử file này, nhưng thấy báo lỗi nên chưa dùng thử. Do em mới theo dõi diễn đàn này nên còn hạn chế ở nhiều mặt, chẳng biết các mod ở đâu mà kêu @$@!^% Em đoán là các mod vẫn theo dõi chủ đề này. Khi nào không còn giải pháp mới thả phao cứu thành viên hihi.. em cứ đoán mò vậy..
Cho em xin nốt cái điều kiện của pác đi để em update số liệu vào luôn và gửi cho pác xem thành tích, em cứ mạn phép .. xin luôn. Em đang bí quá với bảng tính thời gian này záu. Nếu biết có Mod nào ở đây, em cũng nhờ luôn..
Mong tin lắm ạ...:::"""><
 
Mình đang xài E2k3 đó nha.

Nếu mở file ra không thấy xuất hiện hộp thoại thông báo gì;
Mà tại 3 cột cuối có Name# thì mình nghi bạn xài khác ver (?)

Có ai ngang qua giúp chúng tôi với! :-=
 

File đính kèm

  • GPE.rar
    13.4 KB · Đọc: 161
bạn xem giúp trường hợp này

Cũng với dữ liệu như trong file bạn nhưng mình muốn thêm hàm tính tổng số giờ đi trễ và về sớm . bạn làm giúp minh được ko . nếu được bạn gởi file cho mình nha thanks ban rất nhiều .mail minh la khongventoan@gmail.com
 
Có bác nào biết cách tính đi muộn về sớm bao nhiêu phút trong bảng này của em giúp em với ạ :(( E lần đầu làm cái này nên thấy khó quá ạ :(((
 

File đính kèm

  • Bang cham cong mau.xlsx
    120.1 KB · Đọc: 123
em cần các bác pro về excel tính hộ bảng này về sớm, ra muộn bao nhiu phút trong tháng em với. chấm 4 lần /1 ngày. sáng vào 7h00. ra 11h30, chiều vào 13h30 về 17h00.
 

File đính kèm

  • bang cham cong.rar
    42.8 KB · Đọc: 113
cả nhà giúp dùm em hoàn thiện file chấm công này với ạ:
-file chấm công từng nhân viên theo hàng dọc, file chấm đi trễ theo hàng ngàn
==> em muốn khi minh chấm công thì bên đi trễ cũng hiện thông tin
- công ty e có 2 ca, làm thế nào trên công thức thể hiện để lọc 2 thông tin đó cùng 1 lúc ko ạ.
cả nhà xem file đính kẻm.

em xin cám ơn
 

File đính kèm

  • NEO_LNV_V1_T1_0301117.xlsx
    494.5 KB · Đọc: 81
xin chào mình muốn tính tổng time đi trễ, chỉ tính thời gian vào In
nhờ mọi người giúp
mình bấm lệnh ra toàn sai
 

File đính kèm

  • Chấm giờ ra vào.xlsx
    13.8 KB · Đọc: 82
xin chào mình muốn tính tổng time đi trễ, chỉ tính thời gian vào In
nhờ mọi người giúp
mình bấm lệnh ra toàn sai
Tôi thì khác bạn chút, làm lệnh vào nó cộng lại ra kết quả, thì toàn bộ nhân viên đều bị chấm đi trể ráo, vì dữ liệu bạn đưa chả có dữ liệu giờ vào, cũng chả biết bạn muốn cộng vào đâu, rồi không biết cơ quan bạn đi làm lúc từ mấy giờ, do đó tôi chọn mốc 00:00 đến 23:59:59 là giờ vào giờ ra cho công ty bạn.

Thân
 
Tôi thì khác bạn chút, làm lệnh vào nó cộng lại ra kết quả, thì toàn bộ nhân viên đều bị chấm đi trể ráo, vì dữ liệu bạn đưa chả có dữ liệu giờ vào, cũng chả biết bạn muốn cộng vào đâu, rồi không biết cơ quan bạn đi làm lúc từ mấy giờ, do đó tôi chọn mốc 00:00 đến 23:59:59 là giờ vào giờ ra cho công ty bạn.

Thân
cảm ơn bạn, mình quên mất phải điền giờ.
giờ vào làm công ty mình là 8:00 sáng, cho đi muộn không quá 15 phút
sau 15 phút bắt đầu tính giờ đi muộn. và tính luôn cả 15 phút đó
đến sớm hơn trước 8h vẫn tính như bình thường
mình chỉ cần tính số phút vào muộn thôi ạ
cảm ơn
 
Lần chỉnh sửa cuối:
cảm ơn b, m quên mất phải điền giờ.
giờ vào làm cty mình là 8:00 sáng, cho đi muộn k quá 15 phút
sau 15 phút bắt đầu tính giờ đi muộn. và tính luôn cả 15 đó
đến sớm hơn trước 8h vẫn tính như bt
mình chỉ cần tính số phút vào muộn thôi ak.
cảm ơn
Bạn chịu khó điền đầy đủ các ký tự "màu đỏ" ở trên cho rõ nghĩa đi, thì tôi cũng sẽ "chịu khó" ghi đầy đủ công thức cho bạn, chứ công thức mà viết tắt chắc bạn không hiểu đâu:

=S(If..oR(((($C8:$BL8*h-mc)*($C$7:$BL$7="dzô"))^1/2)^2 ^o^ ,))/h

Thân
 
Bạn chịu khó điền đầy đủ các ký tự "màu đỏ" ở trên cho rõ nghĩa đi, thì tôi cũng sẽ "chịu khó" ghi đầy đủ công thức cho bạn, chứ công thức mà viết tắt chắc bạn không hiểu đâu:

=S(If..oR(((($C8:$BL8*h-mc)*($C$7:$BL$7="dzô"))^1/2)^2 ^o^ ,))/h

Thân[/QUOTE
cảm ơn bạn, mình đã sửa lại ở trên rồi nhé.
 
Web KT
Back
Top Bottom