Các câu hỏi về thời gian, tính toán giờ, ngày, tháng, năm được post ở đây

Liên hệ QC

laohiep

Thành viên chính thức
Tham gia
29/11/08
Bài viết
58
Được thích
12
Mình có mong muốn như sau:
ngày đếnngày điKết quảsử dụng hàm01/01/0823/06/09539=DATEDIF($C20,$D20,"d")
nhưng mình muốn rằng kết quả sẽ cho là 1 năm, 5 tháng và 22 ngày
giúp mình lập công thức theo nguyện vọng trên nhá
Cảm ơn các bạn!
 
Mình có mong muốn như sau:
ngày đếnngày điKết quảsử dụng hàm01/01/0823/06/09539=DATEDIF($C20,$D20,"d")
nhưng mình muốn rằng kết quả sẽ cho là 1 năm, 5 tháng và 22 ngày
giúp mình lập công thức theo nguyện vọng trên nhá
Cảm ơn các bạn!



Số năm = DATEDIF($C20,$D20,"y")
Số tháng =
DATEDIF($C20,$D20,"ym")
Số ngày =
DATEDIF($C20,$D20,"md")

Rồi nối lại cho theo ý của bạn thôi, nối giúp bạn luôn nhé:
=DATEDIF(C20;D20;"y")&" năm, "&DATEDIF(C20;D20;"ym")&" tháng "&DATEDIF(C20;D20;"md")&" và ngày"
 
Chỉnh sửa lần cuối bởi điều hành viên:
Các câu hỏi về thời gian, tính toán giờ, ngày, tháng, năm được post ở đây

Chào các Bạn !

Công việc của mình hàng tháng phải làm danh sách thanh tóan tiền BHXH cho công nhân , nhưng mình đang gặp khó khăn tính số ngày nghỉ BHXH, vì Cty mình số lượng CN qúa đông , nên tính theo phương pháp thủ công thì rất cực . Vì vậy mình cần sự giúp đỡ của các Bạn, trong file đính kèm nếu dùng công thức thỉ phải làm sao ?
Rất cảm ơn các Bạn
 

File đính kèm

  • tinh ngay.xls
    14.5 KB · Đọc: 548
Chào các Bạn !

Công việc của mình hàng tháng phải làm danh sách thanh tóan tiền BHXH cho công nhân , nhưng mình đang gặp khó khăn tính số ngày nghỉ BHXH, vì Cty mình số lượng CN qúa đông , nên tính theo phương pháp thủ công thì rất cực . Vì vậy mình cần sự giúp đỡ của các Bạn, trong file đính kèm nếu dùng công thức thỉ phải làm sao ?
Rất cảm ơn các Bạn
Bạn xem trong file. Phải liệt kê ra các ngày nghỉ lễ.
 

File đính kèm

  • Tinh ngay.xls
    19.5 KB · Đọc: 523
Mình viết cho bạn hàm người dùng đây

PHP:
Option Explicit
Function SoNgayNghi(FromDate As Date, ToDate As Date)
 ReDim dateGov(1 To 10) As Date
 Dim Jj As Integer, Zz As Integer, Ww As Byte
 
 dateGov(1) = DateSerial(Year(Date), 1, 1)
 dateGov(2) = DateSerial(Year(Date), 2, 1) ' Tet Nguyen Dan:'
 dateGov(3) = DateSerial(Year(Date), 2, 2) 'Hay Tu Dien Ngay Duong Lich Hang Nam'
 dateGov(4) = DateSerial(Year(Date), 2, 3) '   Nhu Tren '
 dateGov(5) = DateSerial(Year(Date), 2, 4) '   Nhu Tren '
 
 dateGov(6) = DateSerial(Year(Date), 3, 10) 'Hay Tu Dien Ngay Duong Lich Hang Nam'
 dateGov(7) = DateSerial(Year(Date), 4, 30)
 dateGov(8) = DateSerial(Year(Date), 5, 1)
 dateGov(9) = DateSerial(Year(Date), 9, 2)
 
 If FromDate > ToDate Then
   dateGov(10) = FromDate
   FromDate = ToDate:         ToDate = dateGov(10)
 End If
 Zz = ToDate - FromDate
 For Jj = 0 To Zz
   For Ww = 1 To 9
      If FromDate + Jj = dateGov(Ww) Then
         If Weekday(dateGov(Ww)) > 1 Then _
            SoNgayNghi = SoNgayNghi - 1
         Exit For
      End If
   Next Ww
   If Weekday(FromDate + Jj) > 1 Then _
      SoNgayNghi = SoNgayNghi + 1
 Next Jj
End Function


Những chú í khi sử dụng:


(*) Hàm chỉ tính đúng trong năm; Nếu muốn tính chồng lấn 2 năm thì phải viết khác;

(*) Các ngày nghỉ âm lịch hàng năm, bạn phải tra lịch ra ngày dương & đổi trị vô những dòng cần thiết; Đó là 4 ngày Tết nguyên đán & Ngày zổ Tổ Hùng Vương.

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

File đính kèm

  • GPE.rar
    8.2 KB · Đọc: 375
PHP:
Option Explicit
Function SoNgayNghi(FromDate As Date, ToDate As Date)
 ReDim dateGov(1 To 10) As Date
 Dim Jj As Integer, Zz As Integer, Ww As Byte
 
 dateGov(1) = DateSerial(Year(Date), 1, 1)
 dateGov(2) = DateSerial(Year(Date), 2, 1) ' Tet Nguyen Dan:'
 dateGov(3) = DateSerial(Year(Date), 2, 2) 'Hay Tu Dien Ngay Duong Lich Hang Nam'
 dateGov(4) = DateSerial(Year(Date), 2, 3) '   Nhu Tren '
 dateGov(5) = DateSerial(Year(Date), 2, 4) '   Nhu Tren '
 
 dateGov(6) = DateSerial(Year(Date), 3, 10) 'Hay Tu Dien Ngay Duong Lich Hang Nam'
 dateGov(7) = DateSerial(Year(Date), 4, 30)
 dateGov(8) = DateSerial(Year(Date), 5, 1)
 dateGov(9) = DateSerial(Year(Date), 9, 2)
 
 If FromDate > ToDate Then
   dateGov(10) = FromDate
   FromDate = ToDate:         ToDate = dateGov(10)
 End If
 Zz = ToDate - FromDate
 For Jj = 0 To Zz
   For Ww = 1 To 9
      If FromDate + Jj = dateGov(Ww) Then
         If Weekday(dateGov(Ww)) > 1 Then _
            SoNgayNghi = SoNgayNghi - 1
         Exit For
      End If
   Next Ww
   If Weekday(FromDate + Jj) > 1 Then _
      SoNgayNghi = SoNgayNghi + 1
 Next Jj
End Function
Những chú í khi sử dụng:


(*) Hàm chỉ tính đúng trong năm; Nếu muốn tính chồng lấn 2 năm thì phải viết khác;

(*) Các ngày nghỉ âm lịch hàng năm, bạn phải tra lịch ra ngày dương & đổi trị vô những dòng cần thiết; Đó là 4 ngày Tết nguyên đán & Ngày zổ Tổ Hùng Vương.

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

Tiện đây cho em hỏi luôn, nếu những ngày nghỉ lễ tết trung vào ngày thứ 7, CN thì những ngày kế tiếp được trừ bù thì phải dùng code như thế nào hả anh?
 
Tiện đây cho em hỏi luôn, nếu những ngày nghỉ lễ tết trung vào ngày thứ 7, CN thì những ngày kế tiếp được trừ bù thì phải dùng code như thế nào hả anh?

Nghe hình như câu hỏi của bạn khác với ý định của chủ Topic đó nha!
Chủ Topic muốn tính các ngày nghỉ chế độ được hưởng BHXH, như Ốm đau, thai sản, phép năm, RC, . . .

Vậy bạn cho biết khái niệm trừ bù của bạn đi; Có vậy chúng ta sẽ hiểu nhau dễ hơn!
:-= --=0 --=0 :-=
 
Nghe hình như câu hỏi của bạn khác với ý định của chủ Topic đó nha!
Chủ Topic muốn tính các ngày nghỉ chế độ được hưởng BHXH, như Ốm đau, thai sản, phép năm, RC, . . .

Vậy bạn cho biết khái niệm trừ bù của bạn đi; Có vậy chúng ta sẽ hiểu nhau dễ hơn!
:-= --=0 --=0 :-=

Em biết là không đúng chủ đề nhưng nếu có lệnh chỉ lệch một tí xíu thôi. Cái quan trọng là tác giả và mọi người hình dung ra được bác ạ.

Ý của em là: Giả sử ngày lễ 30/4 & 01/05 trùng vào ngày T7, CN thì 02 ngày tiếp theo là thứ hai, thứ ba sẽ không tính vào các ngày nghỉ chế độ được hưởng BHXH, như Ốm đau, thai sản, phép năm, RC, . . .đại loại là như vậy?
 
Tinh so ngay

Bạn xem trong file. Phải liệt kê ra các ngày nghỉ lễ.
Cảm ơn bạn huuthang, mặc dù mình không hiểu được công thức nhưng mình có thể sử dụng được cho công việc của mình , rất nhanh và tiện lợi so với cách mình làm trước đây. Mình cũng cảm ơn ban SA_DQ , thật tình VBA thì mình "mù tịt" mình không biết phải áp dụng như thế nào dù bạn đã cho code sẵn. Các bạn rất nhiệt tình, qua diễn đàn này mình học được rất nhiều điều bổ ích. Một lần nữa cảm ơn các Bạn nhiều nha!
 
Em biết là không đúng chủ đề nhưng nếu có lệnh chỉ lệch một tí xíu thôi. Cái quan trọng là tác giả và mọi người hình dung ra được bác ạ.

Ý của em là: Giả sử ngày lễ 30/4 & 01/05 trùng vào ngày T7, CN thì 02 ngày tiếp theo là thứ hai, thứ ba sẽ không tính vào các ngày nghỉ chế độ được hưởng BHXH, như Ốm đau, thai sản, phép năm, RC, . . .đại loại là như vậy?
Đơn giản thôi. Đối với file của tôi, bạn nhập 2 ngày thứ 2, thứ 3 ấy vào vùng ngày lễ.
 
Ý của em là: Giả sử ngày lễ 30/4 & 01/05 trùng vào ngày T7, CN thì 02 ngày tiếp theo là thứ hai, thứ ba sẽ không tính vào các ngày nghỉ chế độ được hưởng BHXH, như Ốm đau, thai sản, phép năm, RC, . . .đại loại là như vậy?

Cho rằng ngày lễ 30/4 & 01/05 trùng vào ngày T7, CN thì nghỉ bù vào ngày nào cũng có thể, chứ có luật hay nghị định nào bắt phải nghỉ ngay sau đó hay không?

(Nếu có bạn trích dẫn dùm mình nha!:-=)
 
Đơn giản thôi. Đối với file của tôi, bạn nhập 2 ngày thứ 2, thứ 3 ấy vào vùng ngày lễ.

Nếu đặt vào vùng ngày lễ như bạn nói thì không khoa học cho lắm. Chẳng lẽ cứ mội năm mình lại phải dò lịch am(dương) rồi tìm ra những ngày trùng và đặt vào sao? Không ổn bạn à,
 
Cho rằng ngày lễ 30/4 & 01/05 trùng vào ngày T7, CN thì nghỉ bù vào ngày nào cũng có thể, chứ có luật hay nghị định nào bắt phải nghỉ ngay sau đó hay không?

(Nếu có bạn trích dẫn dùm mình nha!:-=)

Bạn nói đúng luật không quy định nhưng đại đa số các trường hợp đều cho phép nghỉ vào những ngày kế tiếp đó luôn, chứ không phải đi là 01 hoặc 02 ngày rồi mới nghỉ bù???
 
Tôi xin gửi file đính kèm ở một chủ đề mới nhờ các bạn giúp đỡ theo ý của tôi
 
Nếu đặt vào vùng ngày lễ như bạn nói thì không khoa học cho lắm. Chẳng lẽ cứ mội năm mình lại phải dò lịch am(dương) rồi tìm ra những ngày trùng và đặt vào sao? Không ổn bạn à,
Tôi nghĩ không có gì là không khoa học hết. Vì ngày nghỉ bù là do mỗi công ty quy định, công thức cũng phải theo một cái chuẩn nào đó chứ.
 
Bạn Huuthang cho mình hỏi chút xíu. trong công thức mình thấy ghi :.... INDIRECT("A1:A"&(C6-B6+1)...., vậy "A1:A" ở đây có nghĩa là gì vậy ?
 
Bạn Huuthang cho mình hỏi chút xíu. trong công thức mình thấy ghi :.... INDIRECT("A1:A"&(C6-B6+1)...., vậy "A1:A" ở đây có nghĩa là gì vậy ?
"A1:A" kết hợp với (C6-B6+1) bằng toán tử & ta sẽ được địa chỉ của một vùng tương ứng.
Ví dụ (C6-B6+1) = 10 thì ta có "A1:A"&(C6-B6+1) = "A1:A10"
 
tinh so ngay nghi

Đơn giản thôi. Đối với file của tôi, bạn nhập 2 ngày thứ 2, thứ 3 ấy vào vùng ngày lễ.

Bạn Huuthang cho mình hỏi chút xíu: trong công thức mình thấy ghi : ........INDIRECT("A1:A"&(C6-B6+1)..., vậy "A1:A" ở đây có nghĩa là gì vậy ?
 
tinh so ngay nghi

"A1:A" kết hợp với (C6-B6+1) bằng toán tử & ta sẽ được địa chỉ của một vùng tương ứng.
Ví dụ (C6-B6+1) = 10 thì ta có "A1:A"&(C6-B6+1) = "A1:A10"
Như vậy khi mình copy công thức của bạn vào file của mình thì "A1:A" vẫn không thay đổi chứ ?
 
Web KT
Back
Top Bottom