Hỏi về file tính tương (1 người xem)

Liên hệ QC

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

tueyennhi

Thành viên tích cực
Tham gia
18/10/10
Bài viết
1,192
Được thích
105
Hỏi về file tính công

Chào anh chị ạ!


Em up lại file tính công.

Một số quy tắc như sau:


1. Quy tắc chung:
- Có OVT N thì OVT Đ sẽ đều là Đ1
- Giờ làm theo căn cứ vào khung giờ đến của ca. Nếu về muộn so với khung giờ thì tối thiểu 30 phút mới được tính, những phút tiếp theo tối thiểu nhảy cách 15p.

Ví dụ: Ca 1 khung giờ là 6-14h. Về trong khoảng 14h30 đến 14h44 thì được tính là 14h30. Về 14h45 đến 14h59 thì tính là 14h45 (Về 14h29 thì tính là 14h). Lý thuyết như vậy nhưng nếu trong cột ô đặc biệt bộ phận làm tròn 14h29 thành 14h30 thì em cũng suy xoa cho qua. Ô giờ đặc biệt kế toán họ chấm em sẽ căn cứ giờ quẹt thẻ nếu chênh lệch 1 vài phút thì em cho qua.

Ca1: Khung giờ công Từ 6h-14h;
Ca2: Khung giờ công Từ 14h-22h:
Ca ngày: Từ 8h đến 20h ---> Khung giờ công từ 8h đến 17h
Ca hành chính: Khung giờ công Từ 8h đến 17h
Ca đêm: Từ 20h đến 8h --> Khung giờ công là 22h đến 6h
Ca 3: Khung giờ công Từ 22h đến 6h

2. Quy tắc tính OVT với từng ca:

- OVT Đối với ca ngày, ca hành chính, ca 1 và ca 2: Nếu thời gian ra và về ngoài khung giờ công của ca làm mà giờ về <=22h thì đều là OVT N và nếu tiếp tục giờ ra vượt cả 22h thì số vượt so với 22h ấy sẽ tính là OVT đêm 1( OVT D1)

- OVT đối với ca đêm, ca 3: Nếu đến sớm so với khung giờ công thì chênh lệch giờ đến thực tế và giờ đến theo khung giờ công sẽ được tính là OVT N và nếu tiếp tục có giờ ra vượt so với Khung giờ công ra thì chênh lệch giữa giờ ra thực tế với giờ ra theo khung giờ công ra sẽ được tính là OVT đêm 1 (OVT D1). Trường hợp trước đó không có OVT N thì số giờ chênh lệch này là OVT đêm 2 (OVT D2)

3. Quy tắc tính công ca làm:

Công ca làm dựa vào khung giờ công của mỗi ca ở trên.

P/s1: Còn có điều liên quan đến trừ giờ ăn:

Ca1, Ca2, Ca3, Ca đêm: Không bị trừ giờ ăn.
Ca ngày, Ca đêm, Hành chính bị trừ "Thời gian ăn 1" nếu có.

Em cảm ơn!

P/s2: Em update file em đang làm dở nhờ sự giúp đỡ của anh ChanhTQ và tất cả mọi người. Hiện không hiểu sao lỗi mà code không chạy, mọi người xem giúp em nhé.

P/s3: Các vấn đề Ps 1 và 2 đã giải quyết. Con đường càng đi về sau càng khó, mọi người xem giúp em xây dựng code để tính ca đêm như nào nhé. Em cảm ơn ạ!


P/s4: Em đa viết xong tuy nhiêu cảm giác cả bộ máy hoạt động cồng kềnh nặng nề thế nào ấy. Ngoài ra định dạng phải làm thủ công ở dưới. Mọi người tham khảo file và xem giúp em nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Thì bạn chuyển sang ghi kết quả vô cột 'Qui ra công' bằng VBA đi.

Tuy nhiên để làm điều này trong công thức hiện thời:
=IF(AND(OR(F9="hanh chinh",F9="ca ngay"),W9>0,X9=0),ROUND(W9/8,2),IF(AND(F9="ca1",W9=8,X9=0),"K1",IF(AND(F9="ca1",W9<8,W9>0,X9=0),ROUND(W9/8,2)&"K1",IF(AND(F9="ca2",W9=8,X9=0),"K2",IF(AND(F9="ca2",W9<8,W9>0,X9=0),ROUND(W9/8,2)&"K2",IF(AND(F9="ca3",W9=0,X9=8),"K3",IF(AND(F9="ca3",W9=0,X9<8,X9>0),ROUND(X9/8,2)&"K3",IF(AND(F9="ca dem",W9=0,X9=8),"Đ",IF(AND(F9="ca dem",W9=0,X9<8,X9>0),ROUND(X9/8,2)&"Đ",IF(AND(W9=0,X9=0),"N",""))))))))))


Cần mấy sửa đổi nhỏ như sau:
(*) Không nên xài kí tự tiếng Việt, như 'Đ' trong công thức
(*) Rút gọn bớt các từ; Mà tốt hơn cả là làm sao chúng có độ dài như nhau, như 'D' => 'Dem'; 'Hanh chính' => 'HCh', . . . .

Vấn đề nữa trong CSDL của bạn là nên mã hóa các chức danh; Ví dụ

Ở cột [Shift] ta chỉ có 6 chức danh; Ta nên gán cho nó mã từ (A...F); Tương tự như vậy với trường [Position] ta có 11 chức danh; Cho nên sẽ tốt nếu bạn đem các chữ cái (A...K) gán cho chúng.
Làm điều này thì bạn đỡ tốn bộ nhớ máy khi thao tác.

Vài lới tham khảo cùng bạn.
 
Thì bạn chuyển sang ghi kết quả vô cột 'Qui ra công' bằng VBA đi.

Tuy nhiên để làm điều này trong công thức hiện thời:
=IF(AND(OR(F9="hanh chinh",F9="ca ngay"),W9>0,X9=0),ROUND(W9/8,2),IF(AND(F9="ca1",W9=8,X9=0),"K1",IF(AND(F9="ca1",W9<8,W9>0,X9=0),ROUND(W9/8,2)&"K1",IF(AND(F9="ca2",W9=8,X9=0),"K2",IF(AND(F9="ca2",W9<8,W9>0,X9=0),ROUND(W9/8,2)&"K2",IF(AND(F9="ca3",W9=0,X9=8),"K3",IF(AND(F9="ca3",W9=0,X9<8,X9>0),ROUND(X9/8,2)&"K3",IF(AND(F9="ca dem",W9=0,X9=8),"Đ",IF(AND(F9="ca dem",W9=0,X9<8,X9>0),ROUND(X9/8,2)&"Đ",IF(AND(W9=0,X9=0),"N",""))))))))))


Cần mấy sửa đổi nhỏ như sau:
(*) Không nên xài kí tự tiếng Việt, như 'Đ' trong công thức
(*) Rút gọn bớt các từ; Mà tốt hơn cả là làm sao chúng có độ dài như nhau, như 'D' => 'Dem'; 'Hanh chính' => 'HCh', . . . .

Vấn đề nữa trong CSDL của bạn là nên mã hóa các chức danh; Ví dụ

Ở cột [Shift] ta chỉ có 6 chức danh; Ta nên gán cho nó mã từ (A...F); Tương tự như vậy với trường [Position] ta có 11 chức danh; Cho nên sẽ tốt nếu bạn đem các chữ cái (A...K) gán cho chúng.
Làm điều này thì bạn đỡ tốn bộ nhớ máy khi thao tác.

Vài lới tham khảo cùng bạn.

Vâng cho em hỏi rút ý 2 rút gọn để có độ dài như nhau mục đích là để làm gì ạ?
Và gán chức danh trường [Position] thành các ký tự mục đích cũng để làm gì ạ? Có cải thiện được nhiều không ạ?
 
... Có cải thiện được nhiều không ạ?

Sổ lương 10.000 người là tầm cỡ quy mô lớn (*)
Công ty lớn thi sổ sách phải có quy trình đầy đủ, có thể kiểm toán được.
Muốn cải thiện, bạn phải đưa cái quy trình ấy ra. Từ ấy mới có thể phân tích thiết kế sắp xếp dữ liệu. Công thức phải rõ rệt (ví dụ công nhân khiếu nại thì ngừoi giữ sổ lương phải có khả năng chứng minh là công thức tính đúng quy trình và hợp đồng lao động)
Nếu là tôi, sau khi thiết kế xong tôi còn đem lên Kế Toán Trưởng duyệt. Về sau này, lỗi gì thì có ngừoi này chịu mọt phần.

(*) nếu trung bình một ngừoi lĩnh 2 triệu/tháng thì cty này chi ra 20 tỷ/tháng cho tiền lương. Ước tính doanh thu thử xem!
 
Vậy để tối nay mình lập cái quy trình vì thực ra mình mới chuyển mảng này và chẳng có cái quy trình nào ngoài quy trình miệng và file từ xa xưa.
 
Em chẳng biết mô tả cái quy trình thế nào nữa chỉ có cái form tính. Anh chị xem giúp em nhé ví dụ nếu chuyển tất cả sang VBA thì sẽ như thế nào?
 
Em chẳng biết mô tả cái quy trình thế nào nữa chỉ có cái form tính. Anh chị xem giúp em nhé ví dụ nếu chuyển tất cả sang VBA thì sẽ như thế nào?

Chuyển cái quy trình miệng và cái trong công thức đang tính ở trên thành văn bản.
Văn bản sau khi được Lãnh đạo công ty duyệt thì đem nó vào áp dụng (công thức hay vba thì phải căn cứ vào đó).
- Thời gian làm việc/ngày, giờ vào, giờ ra.
- Ca làm việc/ngày, bao nhiêu ca làm việc, số giờ/ca làm việc.
- Quy định về làm tròn giờ làm việc (làm tròn tới giờ, phút...)
- Quy định về làm bù giờ, làm tăng ca, làm vào ngày Lễ, Tết các kiểu... tương với đó thì hệ số lương như nào.
 
Ừm trươc mắt mình thay đổi một số cái linh tinh cho dữ liệu gọn gàng khoa học rồi nhờ mọi người sau vậy. Cho mình hỏi ngoài lề chút có một công thức mà nghĩ mãi không ra đại loại như thế này:

A1,(loại 1, loại 2, loại 3),(1,3,2). Ý nghĩa của nó là căn cứ vào dữ liệu ở ô A1 mà xếp thứ hạng tương ứng trong (1,3,2) ví dụ nếu là loại 1 thì là 1, loại 2 thì là 3.... Cách đánh hàm như trên không chắc đúng, mọi người có ai nhớ là hàm gì không thì chỉ cho em nhé.
 
Lần chỉnh sửa cuối:
Có anh chị nào biết đấy là hàm gì không (A,D,X,F) và (5,2,8,1)

Tại A1 có các giá trị hoặc là A hoặc là D hoặc là E hoặc là F, tại B1 đánh hàm đối chiếu giá trị A1 nếu A1 mang giá trị là A thì hàm ra kết quả là 5 nếu mang giá trị D thì hàm ra kết quả là 2 nếu A1 mang giá trị X thì hàm ra kết quả là 8 nếu A1 là F thì hàm ra kết quả là 1.

Có một hàm có tác dụng như vậy mà em không tài nào nhớ.
 
có anh chị nào biết đấy là hàm gì không (a,d,x,f) và (5,2,8,1)

tại a1 có các giá trị hoặc là a hoặc là d hoặc là e hoặc là f, tại b1 đánh hàm đối chiếu giá trị a1 nếu a1 mang giá trị là a thì hàm ra kết quả là 5 nếu mang giá trị d thì hàm ra kết quả là 2 nếu a1 mang giá trị x thì hàm ra kết quả là 8 nếu a1 là f thì hàm ra kết quả là 1.

Có một hàm có tác dụng như vậy mà em không tài nào nhớ.

=INDEx({5;2;8;1},MATCH(A1,{"A";"D";"X";"F"},0))
 
có anh chị nào biết đấy là hàm gì không (a,d,x,f) và (5,2,8,1)

tại a1 có các giá trị hoặc là a hoặc là d hoặc là e hoặc là f, tại b1 đánh hàm đối chiếu giá trị a1 nếu a1 mang giá trị là a thì hàm ra kết quả là 5 nếu mang giá trị d thì hàm ra kết quả là 2 nếu a1 mang giá trị x thì hàm ra kết quả là 8 nếu a1 là f thì hàm ra kết quả là 1.

Có một hàm có tác dụng như vậy mà em không tài nào nhớ.
Mã:
=lookup(a1,{"a","d","x","f"},{5,2,8,1})
 
Hàm LOOKUP dò tìm tương đối, nên dữ liệu trong mảng phải được sắp xếp từ A -> Z

=LOOKUP(A1,{"a","d","f","x"},{5,2,1,8})
cám ơn bạn, không rỏ dữ liệu thực tế cần dò tìm tuyệt đối hay tương đối, tùy trường hợp mà sử dụng công thức thích hợp
 
Dữ liệu cần tìm là tuyệt đối bạn à. Chịu chết không nhớ cái hàm ấy là gì :((
 
Befaint ơi quên mất là dữ liệu cần lấy ở dạng giờ, 5 2 8 1 là 5h, 2h, 8h, 1h. Mình sửa lại thành như vậy mà không biết có sao không

INDEX({0.334;0.5834;0.91667},MATCH(F9,{"ca1";"ca2";"ca3"},0))) <=> INDEX({6;14;22},MATCH(F9,{"ca1";"ca2";"ca3"},0))) với 6, 12, 22 là giờ.
 
Lần chỉnh sửa cuối:
Befaint ơi quên mất là dữ liệu cần lấy ở dạng giờ, 5 2 8 1 là 5h, 2h, 8h, 1h. Mình sửa lại thành như vậy mà không biết có sao không

INDEX({0.334;0.5834;0.91667},MATCH(F9,{"ca1";"ca2";"ca3"},0))) <=> INDEX({6;14;22},MATCH(F9,{"ca1";"ca2";"ca3"},0))) với 6, 12, 22 là giờ.

Cho vào file excel... rồi úp lên.
 
Cho vào file excel... rồi úp lên.

File đây bạn nhé. Ngoài ra mình có nói thêm về cách tính giờ công giờ làm thêm. Mọi người xem có thể viết hàm kiểu khác nhẹ nhàng hơn không hoặc VBA được thì càng tốt --=0.
Thêm một điều nữa rất củ chuối: Tùy từng trường hợp mà sẽ bị trừ giờ ăn ca. Cái này thì đang rất loằng ngoằng mình chưa định nghĩa được.

P/s: File mình đính kèm ở bài #1
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom