Xin công thức tự động tính ngày bảo trì sắp tới (1 người xem)

  • Thread starter Thread starter dalee8x
  • Ngày gửi Ngày gửi

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

dalee8x

Thành viên mới
Tham gia
15/7/12
Bài viết
3
Được thích
0
Chào mọi người,

Đây là lần đầu tiên mình post bài ở đây, mình là kỹ sư, đang có chút vấn đề excel mong các bạn xem giúp,

Mình đang lập bảng theo dõi tình trạng bảo hành và bảo trì thiết bị do công ty mình bán.

Số liệu đưa vào là: hạn bảo hành, ngày bắt đầu bảo hành, số tháng tiến hành bảo trì 1 lần (ex:6 tháng bảo trì 1 lần),

Thì công thức tự động nhảy ngày bảo trì sắp tới.

VD: sản phẩm A bảo hành 24 tháng từ ngày 1/1/2016, 6 tháng bảo trì một lần. Công thức tự động tính ra ngày 1/7/2016 là ngày bảo trì, nếu ngày hiện tại đã qua ngày 1/7/2016 thì công thức tự nhảy ngày thành 1/1/2017 là ngày bảo trì kế tiếp. Hết hạn bảo hành thì ngày bảo trì để trống.

Xin cám ơn mọi người đã dành thời gian,
Xin cám ơn,
Bình.
 

File đính kèm

Bạn thử công thức này xem
Mã:
=IF(TODAY()>H5,"",EDATE(G5,CEILING(DATEDIF(EDATE(G5,-1),TODAY()-1,"m"),I5)))
 
Nếu G5>=26/10/16 thì kết quả = #NUM!
 
Chào anh huuthang_bd, befaint,

Không dám múa rìu qua mắt thợ, nhưng vì ham vui muốn nhập cuộc nên nhờ các anh xem thử và góp ý về công thức sau, xin đừng quở nha.
Mã:
J5=IFERROR(EDATE(G5,(SUMPRODUCT(--(TODAY()>EDATE(G5,(ROW(INDIRECT("1:"&INT(F5/I5))))*I5)))+1)*I5),"")

Chúc các anh ngày vui
 
Chào anh huuthang_bd, befaint,

Không dám múa rìu qua mắt thợ, nhưng vì ham vui muốn nhập cuộc nên nhờ các anh xem thử và góp ý về công thức sau, xin đừng quở nha.
Mã:
J5=IFERROR(EDATE(G5,(SUMPRODUCT(--(TODAY()>EDATE(G5,(ROW(INDIRECT("1:"&INT(F5/I5))))*I5)))+1)*I5),"")

Chúc các anh ngày vui
Công thức này chưa thực hiện yêu cầu
nếu đã hết hạn bảo hành thì không hiển thị gì cả.
 
Công thức này chưa thực hiện yêu cầu
Chào anh huuthang_bd,

Chính xác như anh nói, và còn sai nhiều hạn nữa.
Nhờ anh hướng dẫn thêm:
Ví dụ sử dụng công thức đoạn đầu của anh vào thêm được không?
J5=IF(TODAY()>H5,"",EDATE(G5,(SUMPRODUCT(--(TODAY()>EDATE(G5,(ROW(INDIRECT("1:"&INT(F5/I5))))*I5)))+1)*I5))

Cảm ơn anh nhiều.
 
Lần chỉnh sửa cuối:
Chào mọi người,

Đây là lần đầu tiên mình post bài ở đây, mình là kỹ sư, đang có chút vấn đề excel mong các bạn xem giúp,

Mình đang lập bảng theo dõi tình trạng bảo hành và bảo trì thiết bị do công ty mình bán.

Số liệu đưa vào là: hạn bảo hành, ngày bắt đầu bảo hành, số tháng tiến hành bảo trì 1 lần (ex:6 tháng bảo trì 1 lần),

Thì công thức tự động nhảy ngày bảo trì sắp tới.

VD: sản phẩm A bảo hành 24 tháng từ ngày 1/1/2016, 6 tháng bảo trì một lần. Công thức tự động tính ra ngày 1/7/2016 là ngày bảo trì, nếu ngày hiện tại đã qua ngày 1/7/2016 thì công thức tự nhảy ngày thành 1/1/2017 là ngày bảo trì kế tiếp. Hết hạn bảo hành thì ngày bảo trì để trống.

Xin cám ơn mọi người đã dành thời gian,
Xin cám ơn,
Bình.
Đông vui, em cũng ghóp một CT:
Mã:
=IF(TODAY()>H5,"",LOOKUP(EDATE(TODAY(),I5),EDATE(G5,I5*ROW($1:$100))))
 
Đông vui, em cũng ghóp một CT:
Mã:
=IF(TODAY()>H5,"",LOOKUP(EDATE(TODAY(),I5),EDATE(G5,I5*ROW($1:$100))))
Chào leoheocon,

"Đông vui" thì "hao" chứ sao em!

Anh đã thấy bóng dáng của hai anh em HieuCD và em rồi.

Chúc anh em hội ngộ vui vẻ.
p/s: em xem lại giúp anh, trường hợp như befaint đưa ra!!!
 
Lần chỉnh sửa cuối:
Nếu G5>=26/10/16 thì kết quả = #NUM!
Ngẫm xem cái nếu này có xảy ra không?
Trường hợp này em vẫn nghĩ có thể xảy ra, ví dụ như Iphone 7 cho order ngày 16/9, nhưng 2,3 tuần sau mới nhận hàng, thì ngày bắt đầu bảo hành sẽ lớn hơn ngày hiện tại đặt mua.
P/s: nếu trường hợp này thì CT của em cũng bi sai luôn+-+-+-++-+-+-++-+-+-++-+-+-+
Em sửa CT lại như vầy:
Mã:
=IFERROR(IF(TODAY()>H5,"",LOOKUP(EDATE(TODAY(),I5),EDATE(G5,I5*ROW($1:$100)))),EDATE(G5,I5))
 
Lần chỉnh sửa cuối:
Trường hợp này em vẫn nghĩ có thể xảy ra, ví dụ như Iphone 7 cho order ngày 16/9, nhưng 2,3 tuần sau mới nhận hàng, thì ngày bắt đầu bảo hành sẽ lớn hơn ngày hiện tại đặt mua.
P/s: nếu trường hợp này thì CT của em cũng bi sai luôn+-+-+-++-+-+-++-+-+-++-+-+-+
Em sửa CT lại như vầy:
Mã:
=IFERROR(IF(TODAY()>H5,"",LOOKUP(EDATE(TODAY(),I5),EDATE(G5,I5*ROW($1:$100)))),EDATE(G5,I5))
Chào leoheocon,

Em như đi "trong ruột" của lookup() vậy, em muốn mảng nó xuất hiện như thế nào thì em bắt nó chìu em, do đó đã quản nó trong lòng bàn tay của mình rồi, xử rất đẹp.

Cảm ơn em nhiều và chúc em ngày vui.
 
Trường hợp này em vẫn nghĩ có thể xảy ra, ví dụ như Iphone 7 cho order ngày 16/9, nhưng 2,3 tuần sau mới nhận hàng, thì ngày bắt đầu bảo hành sẽ lớn hơn ngày hiện tại đặt mua.
P/s: nếu trường hợp này thì CT của em cũng bi sai luôn+-+-+-++-+-+-++-+-+-++-+-+-+
Em sửa CT lại như vầy:
Mã:
=IFERROR(IF(TODAY()>H5,"",LOOKUP(EDATE(TODAY(),I5),EDATE(G5,I5*ROW($1:$100)))),EDATE(G5,I5))

Hình chưa đúng với:
F5=1
G5=26/8/2016
I5=1
 
Hình chưa đúng với:
F5=1
G5=26/8/2016
I5=1
Đúng là lọt trường hợp này, cả macth và lookup đều bị, chỉnh lại thì CT hơi dài, có lẽ CT của anh quocgiacan là chuẩn rồi, em chỉnh lại CT của anh quocgiacan cho gọn tý:
Mã:
[/COLOR]=IF(TODAY()>H6,"",EDATE(G6,(SUMPRODUCT(--(TODAY()>EDATE(G6,(ROW($1:$1000))*I6)))+1)*I6))[COLOR=#000000]
Không cầ dùng indirect cho trường hợp này anh!!!

 
Đúng là lọt trường hợp này, cả macth và lookup đều bị, chỉnh lại thì CT hơi dài, có lẽ CT của anh quocgiacan là chuẩn rồi, em chỉnh lại CT của anh quocgiacan cho gọn tý:
Mã:
=IF(TODAY()>H6,"",EDATE(G6,(SUMPRODUCT(--(TODAY()>EDATE(G6,(ROW($1:$1000))*I6)))+1)*I6))

Không cầ dùng indirect cho trường hợp này anh!!!

Chào leoheocon,

Cảm ơn em đã tối ưu công thức của anh đưa ra, anh thấy công thức của anh huuthang_bd và em mới đáng học hỏi. Nếu thêm vào =Iferror(....'CT anh huuthang_bd'...., Edate(G5,I5)) thì tuyệt phải không!

Công nhận, diễn đàn GPE rất dễ thương: là sân chơi bổ ích cho những ai muốn học hỏi excel, càng tham gia mới biết mình càng ngu. Có anh em bạn hữu rất chân thành chỉ bảo nhau chỗ khiếm khuyết như anh huuthang_bd, befaint em và nhiều anh em khác nữa....

Cũng sẳn tiện, chắc anh bầu cho bạn befaint làm Trưởng Thanh tra CP (ý là Chất Phác nha, chứ không phải cái gì Chính chính... đâu), mỗi lần tham gia là phát hiện cái sai của anh em...sợ quá !!! **~****~****~** Nhưng mà chí lý!! --=0--=0--=0

Chúc anh em có một ngày sôi nổi và vui vẻ
 
Chào leoheocon,

Cảm ơn em đã tối ưu công thức của anh đưa ra, anh thấy công thức của anh huuthang_bd và em mới đáng học hỏi. Nếu thêm vào =Iferror(....'CT anh huuthang_bd'...., Edate(G5,I5)) thì tuyệt phải không!

Công nhận, diễn đàn GPE rất dễ thương: là sân chơi bổ ích cho những ai muốn học hỏi excel, càng tham gia mới biết mình càng ngu. Có anh em bạn hữu rất chân thành chỉ bảo nhau chỗ khiếm khuyết như anh huuthang_bd, befaint em và nhiều anh em khác nữa....

Cũng sẳn tiện, chắc anh bầu cho bạn befaint làm Trưởng Thanh tra CP (ý là Chất Phác nha, chứ không phải cái gì Chính chính... đâu), mỗi lần tham gia là phát hiện cái sai của anh em...sợ quá !!! **~****~****~** Nhưng mà chí lý!! --=0--=0--=0

Chúc anh em có một ngày sôi nổi và vui vẻ
Càng đông, càng vui mình càng học hỏi được nhiều anh!!!!!/-*+//-*+//-*+/
 
thay đổi 1 chút công thức của leoheocon
Mã:
=IFERROR(IF(TODAY()>H5,"",LOOKUP(EDATE(TODAY(),I5)-0.1,EDATE(G5,I5*(ROW($1:$20))))),EDATE(G5,I5))
 
Woa diễn đàn nhiệt tình quá, cám ơn các bạn --=0,

Mình áp công thức của bạn huuthang_bd & bạn HieuCD

Thì hình như có lỗi công thức ở đây. Cụ thể có một số trường hợp đã hết hạn bảo hành rồi, nhưng công thức của các bạn vẫn đưa ra lịch bảo trì,

Như hình dưới thì nếu mình nhập đặt hạn bảo hành là 9,10,11 tháng thì công thức vẫn đưa ra lịch dù đã hết hạn bảo hành (lỗi, chưa đúng) .
Capture.PNG

Các bạn xem giúp mình, không biết mình làm đúng chưa, hi,
Bình.
 

File đính kèm

Lần chỉnh sửa cuối:
Woa diễn đàn nhiệt tình quá, cám ơn các bạn --=0,
Mình áp công thức của bạn huuthang_bd & bạn HieuCD
Thì có một số trường hợp outdate bảo hành rồi những vẫn đưa ra lịch bảo trì,
Thí dụ như hình dưới thì nếu đặt hạn bảo hành là 9,10,11 tháng thì công thức vẫn đưa ra lịch. (8 tháng thì chạy đúng).
Các bạn xem giúp mình, không biết mình làm đúng chưa, hi,
Bình.

Sao lại có chính sách bảo trì kỳ vậy???
Điều kiện: mod(F5,I5)=0 chứ!!
 
Sao lại có chính sách bảo trì kỳ vậy???
Điều kiện: mod(F5,I5)=0 chứ!!

Hình như cách viết của mình đã gây hiểu nhầm, mình đã sửa lại, bạn xem thử.

Thực sự các công thức của các bạn đã nhảy đúng ngày, và với mình đã rất ok rồi.

Còn phần "hết hạn bảo hành thì không hiển thị gì" thì mình có thể dùng chức năng Conditional Formating để nó highlight khi hết hạn cũng được.

Thân,
 

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

Back
Top Bottom