PDA

View Full Version : Hỏi về công thức tính ngày làm việc?



lamdbk
31-05-07, 05:31 PM
Toi muon tinh ngay thu viec cua nguoi lao dong nhu sau
Trinh do cong nhan, Trung cap thu viec 30 ngay
Cao dang, ky su thu viec 60 ngay
Ngay thu viec: Chi tinh ngay lam viec thuc te, khong tinh ngay nghi thu bay, chu nhat, ngay nghi le theo quy dinh.
(Toi muon tinh trong EXCEL)

________________________

Bạn vui lòng đọc bài hướng dẫn viết bài tiếng việt có dấu tại đây (http://www.giaiphapexcel.com/forum/showthread.php?t=250) và hướng dẫn cách tìm bài tại GPE tại đây (http://www.giaiphapexcel.com/forum/showthread.php?t=261)nha.

Dang Vinh
01-06-07, 08:05 AM
Tôi không hiểu rõ ý bạn lắm nhưng theo tôi có thể làm cách đó bằng phương pháp sau:

1. Tạo ra một list ngày trong kỳ trong đó quy định ngày làm việc
2. Mở sheet cần làm và đặt công thức tính thời gian tới vùng đó.

Tối cũng có nghĩ đến phương pháp dùng macro nhưng không biết cách khắc phục ngày nghỉ lễ âm lịch.
Rất mong được các bạn góp ý thêm

ThuNghi
01-06-07, 03:11 PM
Bạn nên vào Tool AddIns cài thêm Analysis ToolPak-VBA lúc đó sẽ có hàm workday, cho ta ngày làm việc cuối cùng trừ ngày lễ.
=Workday(ngaydau,songaythuviec,ngayle)
Trong đó ngày lễ là names ngayle ta quy định ở cột A1:A9 (chín ngày lễ) ngày AL thì quy ra DL.
Còn nếu không cài thêm AddIns thì dùng công thức dài lắm.

amesan
02-06-07, 08:36 AM
Bạn nên vào Tool AddIns cài thêm Analysis ToolPak-VBA lúc đó sẽ có hàm workday, cho ta ngày làm việc cuối cùng trừ ngày lễ.
=Workday(ngaydau,songaythuviec,ngayle)
Trong đó ngày lễ là names ngayle ta quy định ở cột A1:A9 (chín ngày lễ) ngày AL thì quy ra DL.
Còn nếu không cài thêm AddIns thì dùng công thức dài lắm.

Chào Thu Nghi
Hàm Workday không tính Ngày Chủ Nhật và Thứ Bảy. Nhưng nếu mình muốn Thứ Bảy cũng được tính vào ngày làm việc thì công thức phải điều chỉnh như thế nào ?

Thân

ThuNghi
02-06-07, 11:32 AM
Trước mắt AddIns của MS Office không có hàm tính bao nhiêu thứ 7, CN, mà dùng VBA thì phiền, có 2 cách.
- Cách "rừng": Bạn thêm list ngày T7, bạn cho thêm 51-53 dòng là ngày thứ 7 của năm. Làm sao tại list t7 trong khoảng thời gian thì trên 4r này có. Như vậy dùng sumproduct((thubay>=ngaydau)*(thubay<=ngaycuoi)) = số ngày thứ bảy.
- Cách "đại rừng": Tìm ngày thứ bảy sau ngày đầu và ngày T7 trước ngày cuối. Hiệu số 2 ngày cho ta khoảng cách ngày t7 đầu - ngày T7 cuối = HS
Số ngày T7 = int(hs/7)+1.
- Có nhiều VBA tìm bao nhiêu ngày T7 và CN, nhưng mà thế nào.
- Tôi cũng có làm 1 file tính bao nhiêu ngày T7, CN bằng công thức (tham khảo net). Nhưng mà công thức dài và phức tạp lắm.
Nếu bạn có nhu cầu tôi sẽ up lên.

tsf
02-06-07, 12:45 PM
To lamdbk!
Bạn ơi, bạn tính ngày thử việc mà chỉ tính ngày làm việc thực tế thì bạn khôn quá, hơi bị bốc lột à nghen.
Cái này thì áp dụng ở công nhân công trường hoặc theo ca thì được đây nè. Còn... hổng chịu :-=

amesan
04-06-07, 08:47 AM
Trước mắt AddIns của MS Office không có hàm tính bao nhiêu thứ 7, CN, mà dùng VBA thì phiền, có 2 cách.
- Cách "rừng": Bạn thêm list ngày T7, bạn cho thêm 51-53 dòng là ngày thứ 7 của năm. Làm sao tại list t7 trong khoảng thời gian thì trên 4r này có. Như vậy dùng sumproduct((thubay>=ngaydau)*(thubay<=ngaycuoi)) = số ngày thứ bảy.
- Cách "đại rừng": Tìm ngày thứ bảy sau ngày đầu và ngày T7 trước ngày cuối. Hiệu số 2 ngày cho ta khoảng cách ngày t7 đầu - ngày T7 cuối = HS
Số ngày T7 = int(hs/7)+1.
- Có nhiều VBA tìm bao nhiêu ngày T7 và CN, nhưng mà thế nào.
- Tôi cũng có làm 1 file tính bao nhiêu ngày T7, CN bằng công thức (tham khảo net). Nhưng mà công thức dài và phức tạp lắm.
Nếu bạn có nhu cầu tôi sẽ up lên.

Chào Thu Nghi

Bạn vui lòng up lên nhé. Cám ơn

Thân

ThuNghi
04-06-07, 09:21 AM
Còn phần ngày đầu là t7, CN hay ngày cuối là T7,CN chưa làm xong thấy oải quá. Bạn xem qua file nhé.

ThuNghi
04-06-07, 11:53 AM
Sau khi nghiên cứu lại, mình thấy phương án này khả thi nhất
- Tạo 1 list thứ bảy - Sat
- Tạo 1 list CN - Sun
- Tạo 1 list Lễ - holy

Số Sat =sumproduct((sat>=ngaydau)*(sat<=ngaycuoi))
Số Sun =sumproduct((sun>=ngaydau)*(sun<=ngaycuoi))
Số Holy =sumproduct((holy>=ngaydau)*(holy<=ngaycuoi))
=>số ngày sat, sun, lễ nghỉ

ThuNghi
04-06-07, 04:29 PM
Vừa mày mò làm xong 1 code tính số ngày T7 hay CN

Function Songay(NgayCuoi As Date, NgayDau As Date, Thu As Integer) As Integer
Dim i As Integer
Dim ThoiGian As Integer
'lay hieu so ngaycuoi-ngaydau
If NgayCuoi < NgayDau Then
MsgBox ("Ban nhap sai-nhap lai songay(ngaycuoi,ngaydau,thu)")
Exit Function
End If
ThoiGian = NgayCuoi - NgayDau
For i = ThoiGian To 0 Step -1
'1 la CN, 2 la thu 2 ....,7 la thu 7
If Weekday(NgayCuoi - i) = Thu Then
Songay = Songay + 1
End If
Next i
End Function

Bạn test lại thử

=songay(ngaycuoi,ngaydau,thu)
thu là 1,2,...7 (CN->T7)

amesan
05-06-07, 09:37 AM
Vừa mày mò làm xong 1 code tính số ngày T7 hay CN

Bạn test lại thử

=songay(ngaycuoi,ngaydau,thu)
thu là 1,2,...7 (CN->T7)

Chào Thu Nghi

Mình đã Test và thấy rất OK. Cám ơn và thân chào.

thietbhl
20-03-11, 09:59 AM
Bạn ơi mình muốn tính ngày làm việc mà tính luôn ngày thứ 7, chỉ trừ ngày CN thôi thì dùng công thức nào?

phihndhsp
04-04-13, 09:52 AM
ví dụ tôi có 1 list danh sách ngày nghỉ được đánh dấu (kể cả là thứ bảy hay chủ nhật)
công việc như sau
tôi bắt đầu từ 1 ngày nào đó và khối lượng công việc làm trong số ngày cái này có sẳn(có thể làm ngày thứ 7 hay chủ nhật nữa)
yêu cầu là tìm ngày kết thúc
tôi có sử dụng hàm workday(), nhưng mà không đúng chính xác
hàm workday() không tính ngày thứ bảy và chủ nhật, nhưng công việc này có thể ngày thứ hay đi làm hoặc không đi làm, ngày chủ nhật đi làm hoặc không đi làm?
xin được các thành viên giúp đỡ cho trường hợp này, xin cảm ơn
tôi có gởi kèm theo file

ndu96081631
04-04-13, 10:25 AM
ví dụ tôi có 1 list danh sách ngày nghỉ được đánh dấu (kể cả là thứ bảy hay chủ nhật)
công việc như sau
tôi bắt đầu từ 1 ngày nào đó và khối lượng công việc làm trong số ngày cái này có sẳn(có thể làm ngày thứ 7 hay chủ nhật nữa)
yêu cầu là tìm ngày kết thúc
tôi có sử dụng hàm workday(), nhưng mà không đúng chính xác
hàm workday() không tính ngày thứ bảy và chủ nhật, nhưng công việc này có thể ngày thứ hay đi làm hoặc không đi làm, ngày chủ nhật đi làm hoặc không đi làm?
xin được các thành viên giúp đỡ cho trường hợp này, xin cảm ơn
tôi có gởi kèm theo file

Điều quan trọng bạn lại không nhắc đến: "Có tính từ ngày bắt đầu hay không?"
Tôi làm theo 2 trường hợp luôn:
1> Tính từ ngày bắt đầu:

=SMALL(IF(COUNTIF($A$2:$A$27,H2+ROW($1:$100)-1),"",H2+ROW($1:$100)-1),I2)
2> Không tính ngày bắt đầu:

=SMALL(IF(COUNTIF($A$2:$A$27,H2+ROW($1:$100)),"",H2+ROW($1:$100)),I2)
Công thức mảng nha

phihndhsp
04-04-13, 10:44 AM
dạ bước đầu em thấy công thức này =SMALL(IF(COUNTIF($A$2:$A$27,H2+ROW($1:$100)),"",H2+ROW($1:$100)),I2) đã đúng rồi, để em chạy test thử nhiều trường hợp rồi sẽ tính tiếp, em cảm ơn anh nhiều, em nợ anh ndu và diễn đàn rất nhiều. chúc anh làm việc vui vẻ

utan
24-04-13, 12:40 PM
Dear all,

Xin giúp mình tính số ngày làm việc trong tháng khi nghỉ chủ nhật và buổi sáng thứ bảy.

Xin cám ơn!

ndu96081631
24-04-13, 12:51 PM
Dear all,

Xin giúp mình tính số ngày làm việc trong tháng khi nghỉ chủ nhật và buổi sáng thứ bảy.

Xin cám ơn!
Giả định rằng bạn có trước chỉ số THÁNG và NĂM
Vậy giải thuật sẽ là
- Xác định ngày đầu tháng =DATE(NĂM, THÁNG, 1) ---> (NĐT)
- Xác định ngày cuối tháng =DATE(NĂM, THÁNG +1, 0) ---> (NCT)
- Tổng số ngày trong tháng =NCT - NĐT +1 ---> (Kết quả A)
- Tổng số ngày T7 trong tháng: =INT((NCT -NĐT -MOD(NCT -7,7)+7)/7) ---> (Kết quả B)
- Tổng số ngày CN trong tháng: =INT((NCT -NĐT -MOD(NCT -1,7)+7)/7) ---> (Kết quả C)
- Cuối cùng, kết quả cần tìm là: =Kết quả A - (Kết quả B)/2 - Kết quả C
---------------
Với Excel 2007 hoặc 2010, bạn có thể kết hợp với hàm NETWORKDAYS để rút gọn bớt công thức
Gợi ý là thế, nếu bạn không tự làm được, hãy cho file lên đây

utan
24-04-13, 05:41 PM
Bạn có thể giúp mình tính thời gian làm việc như trên bằng hàm NETWORKDAYScho từng tháng 1,2,3,4...12 được không?

ndu96081631
24-04-13, 07:59 PM
Bạn có thể giúp mình tính thời gian làm việc như trên bằng hàm NETWORKDAYScho từng tháng 1,2,3,4...12 được không?

Bạn cần tính cái gì trong file thực tế thì cứ việc đưa file ấy lên đây nhé (Mất công làm rồi lại phải làm lại)

utan
24-04-13, 08:22 PM
Chủ yếu là tính ngày công làm việc trong tháng để tính lương. File chưa hoàn thiện nên mình chưa up được.

Thanks!