Anh chi.Em muốn hàm date tự cập nhật

  • Thread starter Thread starter hvphong
  • Ngày gửi Ngày gửi
Liên hệ QC

hvphong

Thành viên chính thức
Tham gia
28/9/07
Bài viết
56
Được thích
1
Em muon Excel tự hiểu ngày nghỉ mà nhảy lên ngày làm việc tiếp theo nhờ Anh, chị chỉ giúp.cụ thể như file kem theo.
 

File đính kèm

- Trước tiên, dùng công thức sau cho ngắn (chưa cộng thêm ngày)
C3 = IF(RIGHT(B2;1)="D";A2+1;IF(RIGHT(B2;1)="W";A2+7;EDATE(A2;1)))
- Sau đó xét ngày trong tuần dùng weekday()
D3 = IF(WEEKDAY(C2)=7;C2+2;IF(WEEKDAY(C2)=1;C2+1;C2))

Ghi chú: Weekday(thứ bảy) = 7, Weekday(Chủ nhật) = 1
Cột C là cột phụ có thể dấu đi, nếu không dùng cột phụ công thức dài lắm, gõ sai là chắc.
 
Bạn sửa lại hàm DateAdd của VBA, như sau:

PHP:
Option Explicit

Function WDateAdd(DVi As String, SLg As Integer, Dat As Date) As Date
 'DVi:="M", "D", "Q", "Y" '
 DVi = UCase$(DVi)
 WDateAdd = DateAdd(DVi, SLg, Dat)
 If Weekday(WDateAdd, vbSunday) = 7 Then WDateAdd = WDateAdd + 2
 If Weekday(WDateAdd, vbSunday) = 1 Then WDateAdd = WDateAdd + 1
End Function
 
Lần chỉnh sửa cuối:
Tôi thì dùng name cho gọn lại 1 chút:
Đặt con trỏ chuột tại dòng thứ 3 cũa cell bất kỳ, đặt name như sau:
Mã:
NGAYTRA =DATE(YEAR($A3),MONTH($A3)+(RIGHT($B3)="M")*LEFT($B3,LEN($B3)-1),DAY($A3)+IF(RIGHT($B3)="W",7,IF(RIGHT($B3)="D",1,0))*LEFT($B3,LEN($B3)-1))
Chú ý hàm LEFT ko dc ghi LEFT(... ,1) hoặc LEFT(... ,2) mà phải là LEFT(.. LEN(..)-1) là chắc ăn nhất
Tiếp theo tại C3 dùng công thức:
Mã:
=CHOOSE(WEEKDAY(NGAYTRA),1,0,0,0,0,0,2)+NGAYTRA
Xem file
ANH TUẤN
 

File đính kèm

Nếu muốn dùng hàm EDATE thì sữa name lại như sau:
Mã:
NGAYTRA =(RIGHT($B3)="M")*EDATE($A3,1)+(RIGHT($B3)="W")*(7*LEFT($B3,LEN($B3)-1)+$A3)+(RIGHT($B3)="D")*(LEFT($B3,LEN($B3)-1)+$A3)
Hoặc
Mã:
NGAYTRA =IF(RIGHT($B3)="M",EDATE($A3,1),IF(RIGHT($B3)="W",7*LEFT($B3,LEN($B3)-1)+$A3,LEFT($B3,LEN($B3)-1)+$A3))
Cuối cùng dùng công thức:
Mã:
=CHOOSE(WEEKDAY(NGAYTRA),1,0,0,0,0,0,2)+NGAYTRA
Nói chung giãi pháp thì có nhiều, nhưng tôi lấy làm ngạc nhiên tại sao ko cho thời hạn thành 2 cột riêng biệt: THỜI HẠN và ĐƠN VỊ TÍNH... ??? Chẳng hạn muốn ghi thời hạn là 5 ngày thì ghi số 5 vào cột THỜI HẠN, ghi chử D vào cột ĐƠN VỊ TÍNH... thế có phải đã làm cho công việc cũa ta trở nên nhẹ nhàng hơn ko?
Nếu đây chỉ là nghiên cứu cho vui thì ko có vấn đề, còn như thực tế thì nên chọn phương án dễ nhất... Tôi nghĩ ta ko nên tự làm khó mình vì những việc ko đáng như vậy
Mến
ANH TUẤN
 
hvphong đã viết:
Em muon Excel tự hiểu ngày nghỉ mà nhảy lên ngày làm việc tiếp theo nhờ Anh, chị chỉ giúp.cụ thể như file kem theo.

Theo mình có một cách thủ công, bạn thử xem nghen:
- Cột thời hạn: dùng đơn vị tính: số ngày
- Cột NGÀYtrả: nhập công thức If(WEEKDAY(A3+B3)=7;A3+B3+2;if(WEEKDAY(A3+B3)=1;A3+B3+1;A3+B3)
 
Lần chỉnh sửa cuối:
Tôi có bảng theo dõi bán vé(file kèm theo).Nhờ ACE giúp: Làm thế nào khi đánh chữ cái đầu(họ-tên)thì nó hiện ra mã đặt chỗ luôn?Tôi chưa biết gì về Excel đâu,mọi người giúp tôi nhé
 
ôi có bảng theo dõi bán vé(file kèm theo).Nhờ ACE giúp: Làm thế nào khi đánh chữ cái đầu(họ-tên)thì nó hiện ra mã đặt chỗ luôn?Tôi chưa biết gì về Excel đâu,mọi người giúp tôi nhé

bạn tìm hiểu cách gửi bài và gửi file trước nhé .
 
Web KT

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

Back
Top Bottom