Cách tính ngày đến hạn!

Liên hệ QC
Cho bạn thêm 1 cách:
Mã:
=IF(F3="ngay",LOOKUP(TODAY()+E3,D3+E3*ROW($1:$100)),LOOKUP(EDATE(TODAY(),E3*IF(F3="nam",12,1)),EDATE(D3,E3*IF(F3="nam",12,1)*ROW($1:$100))))
Rồi fill xuống!!!
Công thức này chua chuẩn ạ
VD ngày đầu: 29/8/2013, chu kỳ 6 tháng, kết quả của bạn là 28/2/2017. Trong khi đó kết quả cần là 29/8/2016
 
Công thức này chua chuẩn ạ
VD ngày đầu: 29/8/2013, chu kỳ 6 tháng, kết quả của bạn là 28/2/2017. Trong khi đó kết quả cần là 29/8/2016
Bạn chỉnh lại như vầy:
Mã:
=IF(F3="ngay",LOOKUP(TODAY()+E3-1,D3+E3*ROW($1:$100)),LOOKUP(EDATE(TODAY(),E3*IF(F3="nam",12,1))-1,EDATE(D3,E3*IF(F3="nam",12,1)*ROW($1:$100))))
 
Loay hoay mãi không tính được ngày tới hạn sắp đến của chu kỳ thời gian
Em tạm tính theo cách dưới đây, nhưng theo suy nghĩ của em không chính xác một số trường hợp. Các anh chị có cách nào khác mong được giúp đỡ.
Xin cảm ơn.

Thử hàm tự tạo xem kết quả thế nào:
PHP:
Public Function GPE(Rng As Long, Num As Long, Txt As String) As Long
Dim I As Long, Str As String, xDate As Long, iDate As Long
Str = UCase(Txt): xDate = Date
For I = 1 To 100
    Select Case Str
        Case "NAM"
            iDate = DateSerial(Year(Rng) + (I * Num), Month(Rng), Day(Rng))
        Case "THANG"
            iDate = DateSerial(Year(Rng), Month(Rng) + (I * Num), Day(Rng))
        Case "NGAY"
            iDate = DateSerial(Year(Rng), Month(Rng), Day(Rng) + (I * Num))
    End Select
    If iDate >= xDate Then
        GPE = iDate
        Exit For
    End If
Next I
End Function
Công thức:
PHP:
G3=GPE(D3;E3;F3)
 
Thử hàm tự tạo xem kết quả thế nào:
PHP:
Public Function GPE(Rng As Long, Num As Long, Txt As String) As Long
Dim I As Long, Str As String, xDate As Long, iDate As Long
Str = UCase(Txt): xDate = Date
For I = 1 To 100
    Select Case Str
        Case "NAM"
            iDate = DateSerial(Year(Rng) + (I * Num), Month(Rng), Day(Rng))
        Case "THANG"
            iDate = DateSerial(Year(Rng), Month(Rng) + (I * Num), Day(Rng))
        Case "NGAY"
            iDate = DateSerial(Year(Rng), Month(Rng), Day(Rng) + (I * Num))
    End Select
    If iDate >= xDate Then
        GPE = iDate
        Exit For
    End If
Next I
End Function
Công thức:
PHP:
G3=GPE(D3;E3;F3)
Ha.. ha.. CHUYÊN GIA công thức vụ này cũng cần đến hàm tự tạo. Cảm ơn anh
 
Công thức bài 15 bị lỗi, xin sửa lại là:

=IF(F3="ngay",D3+CEILING(TODAY()-D3,E3),EDATE(D3,CEILING(DATEDIF(D3,TODAY(),"m")+(DAY(TODAY())>DAY(D3)),IF(F3="nam",E3*12,E3))))

Phần màu đỏ mới thêm vào.
Công thức này vẫn còn trường hợp sai
VD: ngày đầu 30/7/1977, chu kỳ 1 năm kết quả công thức tính 30/7/2016. Trong khi đó kết quả cần là 30/7/2017
 
Công thức này vẫn còn trường hợp sai
VD: ngày đầu 30/7/1977, chu kỳ 1 năm kết quả công thức tính 30/7/2016. Trong khi đó kết quả cần là 30/7/2017
Sửa chổ màu đỏ:

=IF(F3="ngay",D3+CEILING(TODAY()-D3,E3),EDATE(D3,CEILING(DATEDIF(D3,TODAY(),"m")+(DATEDIF(D3,TODAY(),"md")>0),IF(F3="nam",E3*12,E3))))
 
1. Góp ý
+ Chỉ nên dùng 2 chu kỳ là ngày và tháng. Không dùng năm vì thay 1 năm băng 12 tháng
+ Thay vậy cũng tiện vì nếu chu kỳ là quý thì thay bằng 3 tháng.

2. Hiểu ý của tác giả như sau có đúng không (tôi lấy ý của bài #1 nói về tiền bạc và ngày đến hạn)
a. Nếu gửi tiền ngày 31 - 12 - 2015 chu kỳ 1 tháng thì
ngày đáo hạn của tháng tiếp là 31 - 1 - 2016
ngày đáo hạn của tháng tiếp là 29 - 2 - 2016

b. Nếu gửi tiền ngày 30 - 11 - 2015 chu kỳ 1 tháng thì
ngày đáo hạn của tháng tiếp là 30 - 12 - 2015
ngày đáo hạn của tháng tiếp là 30 - 01 - 2016
ngày đáo hạn của tháng tiếp là 29 - 02 - 2016

c. Nếu gửi tiền ngày 29 - 02 - 2016 chu kỳ 1 tháng thì
ngày đáo hạn của 12 tháng sau là 28 - 02 - 2017
ngày đáo hạn của các tháng trong năm đều là ngày 29.

Tức là ngày đáo hạn theo chu kỳ tháng là hiệu số tháng sau với tháng đầu luôn bằng đúng (bội) số tháng của chu kỳ. Còn ngày thì phải hiệu chỉnh theo số ngày của tháng ban đầu và tháng cần xét cho phù hợp.

3. Theo trao đổi riêng, Hoài muốn biết vào một ngày nào đó trong tháng thì còn mấy ngày nữa sẽ đến ngày đáo hạn.
Ví dụ theo mục 2a ở trên:
Nếu gửi tiền ngày 31 - 12 - 2015 chu kỳ 1 tháng thì
ngày đáo hạn của tháng tiếp là 31 - 1 - 2016
ngày đáo hạn của tháng tiếp là 29 - 2 - 2016

thì
vào ngày 20-1-16 thì còn 11 ngày
vào ngày 20-2-16 thì còn 9 ngày

Những con số 11 hay 9 ở trên là yêu cầu tính toán phải kg. Tức là dùng công thức nào để ra nó.

Có gì thì comment ngay nha
 
1. Góp ý
+ Chỉ nên dùng 2 chu kỳ là ngày và tháng. Không dùng năm vì thay 1 năm băng 12 tháng
+ Thay vậy cũng tiện vì nếu chu kỳ là quý thì thay bằng 3 tháng.

2. Hiểu ý của tác giả như sau có đúng không (tôi lấy ý của bài #1 nói về tiền bạc và ngày đến hạn)
a. Nếu gửi tiền ngày 31 - 12 - 2015 chu kỳ 1 tháng thì
ngày đáo hạn của tháng tiếp là 31 - 1 - 2016
ngày đáo hạn của tháng tiếp là 29 - 2 - 2016

b. Nếu gửi tiền ngày 30 - 11 - 2015 chu kỳ 1 tháng thì
ngày đáo hạn của tháng tiếp là 30 - 12 - 2015
ngày đáo hạn của tháng tiếp là 30 - 01 - 2016
ngày đáo hạn của tháng tiếp là 29 - 02 - 2016

c. Nếu gửi tiền ngày 29 - 02 - 2016 chu kỳ 1 tháng thì
ngày đáo hạn của 12 tháng sau là 28 - 02 - 2017
ngày đáo hạn của các tháng trong năm đều là ngày 29.

Tức là ngày đáo hạn theo chu kỳ tháng là hiệu số tháng sau với tháng đầu luôn bằng đúng (bội) số tháng của chu kỳ. Còn ngày thì phải hiệu chỉnh theo số ngày của tháng ban đầu và tháng cần xét cho phù hợp.

3. Theo trao đổi riêng, Hoài muốn biết vào một ngày nào đó trong tháng thì còn mấy ngày nữa sẽ đến ngày đáo hạn.
Ví dụ theo mục 2a ở trên:
Nếu gửi tiền ngày 31 - 12 - 2015 chu kỳ 1 tháng thì
ngày đáo hạn của tháng tiếp là 31 - 1 - 2016
ngày đáo hạn của tháng tiếp là 29 - 2 - 2016

thì
vào ngày 20-1-16 thì còn 11 ngày
vào ngày 20-2-16 thì còn 9 ngày

Những con số 11 hay 9 ở trên là yêu cầu tính toán phải kg. Tức là dùng công thức nào để ra nó.

Có gì thì comment ngay nha
Mình có một bài toán gần tương tự như thế này, có gì nhờ các bạn giúp mình với nhé.
Cụ thể:
Trong 1 bảng có 2 cột (1) danh sách khách hàng, (2) có các ngày lấy hàng. Mình muốn dự báo ngày lấy hàng tiếp theo dự trên lịch sử đã lấy hàng tại cột (3). VD: Khách hàng A lấy hàng các ngày 1/11, 10/11, 12/11 => Ngày dự kiến lấy tiếp theo sẽ là ngày 16/11
Vấn đề là bảng của mình được lập qua pivottable (để sắp xếp theo khách hàng) nên số liệu thay đổi liên tục và mình không biết sử dụng công thức nào để có thể tìm ra được Dự kiến ngày lấy hàng tiếp theo
Mong các bạn giúp mình công thức để tính toán với nhé.
Trân trọng!
LongP
 
Mình có một bài toán gần tương tự như thế này, có gì nhờ các bạn giúp mình với nhé.
Cụ thể:
Trong 1 bảng có 2 cột (1) danh sách khách hàng, (2) có các ngày lấy hàng. Mình muốn dự báo ngày lấy hàng tiếp theo dự trên lịch sử đã lấy hàng tại cột (3). VD: Khách hàng A lấy hàng các ngày 1/11, 10/11, 12/11 => Ngày dự kiến lấy tiếp theo sẽ là ngày 16/11
Vấn đề là bảng của mình được lập qua pivottable (để sắp xếp theo khách hàng) nên số liệu thay đổi liên tục và mình không biết sử dụng công thức nào để có thể tìm ra được Dự kiến ngày lấy hàng tiếp theo
Mong các bạn giúp mình công thức để tính toán với nhé.
Trân trọng!
LongP
bạn đưa file lên dễ làm hơn
 
Gửi bạn @bebanhbeo
Xem chi tiết trong file giúp mình với nhé. Cụ thể: Mình có 2 cột là Tên khách hàng và cột Tuần
Trong cột tuần là tuần tính theo năm 2018 mà khách hàng đã lấy hàng.
Vấn đề:
1. Với khách hàng chỉ có 1 lần lấy hàng (VD: 2704 Tòa Tháp Tây) tại cột C dòng tương ứng sẽ hiển thị "Không đủ dữ liệu"
2. Với khách hàng đã có lịch sử lấy hàng. (VD: Beauty & Spa Thái Anh) tại cột C dòng tương ứng đầu tiên sẽ hiển thị Số tuần kế tiếp sẽ lấy hàng dựa trên phép tính trung bình các tuần đã lấy hàng
Xin cảm ơn!
LongP
 

File đính kèm

  • Lịch chăm sóc khách hàng.xlsx
    1.4 MB · Đọc: 10
Gửi bạn @bebanhbeo
Xem chi tiết trong file giúp mình với nhé. Cụ thể: Mình có 2 cột là Tên khách hàng và cột Tuần
Trong cột tuần là tuần tính theo năm 2018 mà khách hàng đã lấy hàng.
Vấn đề:
1. Với khách hàng chỉ có 1 lần lấy hàng (VD: 2704 Tòa Tháp Tây) tại cột C dòng tương ứng sẽ hiển thị "Không đủ dữ liệu"
2. Với khách hàng đã có lịch sử lấy hàng. (VD: Beauty & Spa Thái Anh) tại cột C dòng tương ứng đầu tiên sẽ hiển thị Số tuần kế tiếp sẽ lấy hàng dựa trên phép tính trung bình các tuần đã lấy hàng
Xin cảm ơn!
LongP
Thử vầy được hông nhen!
Mã:
C5=IF(A5<>"",IFERROR(ROUND((AGGREGATE(14,6,$B$5:$B$214/(COUNTIF($A$5:A5,"<>")=COUNTIF(OFFSET($A$5,,,ROW($1:$210)),"<>")),1)-B5)/
(SUMPRODUCT(N(COUNTIF($A$5:A5,"<>")=COUNTIF(OFFSET($A$5,,,ROW($1:$210)),"<>")))-1),2),"Không đủ dữ liệu"),"")
Fill xuống.
Xem file kèm. hihi ^o^
 

File đính kèm

  • Lịch chăm sóc khách hàng.xlsx
    1.6 MB · Đọc: 17
Gửi bạn @Mộng Thường 2001,
Xin cảm ơn bạn trước! Tuy nhiên mình giải thích rõ hơn một chút và mong bạn hỗ trợ mình thêm nhé.
1. Ok
2. Với khách hàng đã có lịch sử lấy hàng. (VD: Beauty & Spa Thái Anh) tại cột C dòng tương ứng đầu tiên sẽ hiển thị Số tuần kế tiếp sẽ lấy hàng dựa trên phép tính trung bình các tuần đã lấy hàng.
==>> Bản thân cột B là số tuần mà khách hàng lấy hàng (VD: Beauty & Spa Thái Anh) họ đã lấy vào các tuần 1,4,5,6,9,11.
Có nghĩa là: họ đã lấy hàng vào các tuần 1,4,...,11 tính theo weeknum 2018 và mình muốn lấy số tuần kế tiếp dựa trên lịch sử lấy hàng
Có nghĩa là: Tính từ tuần 1 tới tuần 11, có 10 tuần và họ đã lấy cả thảy 6 lần, như vậy bình quân là 1,7 tuần họ sẽ lấy 1 đơn hàng và thời gian lấy hàng kế tiếp là 11+1,7=12,7 và round(12.7,0)=13. Có nghĩa là tới tuần 13 của năm 2018, tôi có thể chủ động gọi cho họ để tránh tình trạng hết hàng trong kho dự trữ của khách hàng vậy mà.
Trân trọng!
LongP
 
Gửi bạn @Mộng Thường 2001,
Xin cảm ơn bạn trước! Tuy nhiên mình giải thích rõ hơn một chút và mong bạn hỗ trợ mình thêm nhé.
1. Ok
2. Với khách hàng đã có lịch sử lấy hàng. (VD: Beauty & Spa Thái Anh) tại cột C dòng tương ứng đầu tiên sẽ hiển thị Số tuần kế tiếp sẽ lấy hàng dựa trên phép tính trung bình các tuần đã lấy hàng.
==>> Bản thân cột B là số tuần mà khách hàng lấy hàng (VD: Beauty & Spa Thái Anh) họ đã lấy vào các tuần 1,4,5,6,9,11.
Có nghĩa là: họ đã lấy hàng vào các tuần 1,4,...,11 tính theo weeknum 2018 và mình muốn lấy số tuần kế tiếp dựa trên lịch sử lấy hàng
Có nghĩa là: Tính từ tuần 1 tới tuần 11, có 10 tuần và họ đã lấy cả thảy 6 lần, như vậy bình quân là 1,7 tuần họ sẽ lấy 1 đơn hàng và thời gian lấy hàng kế tiếp là 11+1,7=12,7 và round(12.7,0)=13. Có nghĩa là tới tuần 13 của năm 2018, tôi có thể chủ động gọi cho họ để tránh tình trạng hết hàng trong kho dự trữ của khách hàng vậy mà.
Trân trọng!
LongP
Nếu tính: 1,4,5,6,9,11 có 10 tuần với 6 lần lấy hàng => bình quân là: 1,7 tuần (như trên bạn nêu)
Vậy chỉ có: tuần 4-> tuần 9: 5 tuần với 2 lần lấy hàng => bình quân là: 2,5 tuần!? liệu vậy có ổn không bạn? giữa hai mốc tuần lấy hàng rõ ràng là 5 tuần mà!?
hihi ^o^
 
Gửi bạn
Nếu tính: 1,4,5,6,9,11 có 10 tuần với 6 lần lấy hàng => bình quân là: 1,7 tuần (như trên bạn nêu)
Vậy chỉ có: tuần 4-> tuần 9: 5 tuần với 2 lần lấy hàng => bình quân là: 2,5 tuần!? liệu vậy có ổn không bạn? giữa hai mốc tuần lấy hàng rõ ràng là 5 tuần mà!?
hihi ^o^
Gửi bạn,
:) Với lịch sử có 2 tuần thì có vẻ sẽ khó để tính được "tương đối" thời gian họ sẽ lấy hàng, nhưng với lịch sử nhiều hơn thì mình sẽ dễ quản trị được thời gian cần phải gọi điện chăm sóc khách hàng, hoặc giả sử Đúng là 5 tuần, thực tế là 2.5 tuần mình yêu cầu nhân viên gọi điện thoại thì cũng đã tốt với mình rồi bạn ah. (1) là mình giảm được thời gian gọi điện lung tung vì không có mốc thời gian nào cả. (2) là "tương đối" thôi nhưng ít nhất là còn có cái cọc để bám. (3) là nếu họ chưa đến lịch giao hàng thì mình cũng có thể nắm được sơ bộ lượng hàng tồn kho tại thời điểm chăm sóc khách hàng. (4) nữa là gọi điện nhiều quá thì phiền khách hàng, gọi điện ít quá thì khách hàng dễ quên mình lắm. (5) nữa là mình học thêm được 1 công thức, một cách dùng công thức giải quyết công việc trong excel từ các chuyên gia
Với chừng ấy lý do thì quả thật là 2,5 so với 5 tuần cũng đã là rất tốt với mình rồi bạn ah.
Giúp mình nha! :)
Trân trọng!
LongP
 
Gửi bạn

Gửi bạn,
:) Với lịch sử có 2 tuần thì có vẻ sẽ khó để tính được "tương đối" thời gian họ sẽ lấy hàng, nhưng với lịch sử nhiều hơn thì mình sẽ dễ quản trị được thời gian cần phải gọi điện chăm sóc khách hàng, hoặc giả sử Đúng là 5 tuần, thực tế là 2.5 tuần mình yêu cầu nhân viên gọi điện thoại thì cũng đã tốt với mình rồi bạn ah. (1) là mình giảm được thời gian gọi điện lung tung vì không có mốc thời gian nào cả. (2) là "tương đối" thôi nhưng ít nhất là còn có cái cọc để bám. (3) là nếu họ chưa đến lịch giao hàng thì mình cũng có thể nắm được sơ bộ lượng hàng tồn kho tại thời điểm chăm sóc khách hàng. (4) nữa là gọi điện nhiều quá thì phiền khách hàng, gọi điện ít quá thì khách hàng dễ quên mình lắm. (5) nữa là mình học thêm được 1 công thức, một cách dùng công thức giải quyết công việc trong excel từ các chuyên gia
Với chừng ấy lý do thì quả thật là 2,5 so với 5 tuần cũng đã là rất tốt với mình rồi bạn ah.
Giúp mình nha! :)
Trân trọng!
LongP
Bạn thấy ổn thì ổn! :)
Xem file kèm. hihi ^o^
 

File đính kèm

  • Lịch chăm sóc khách hàng.xlsx
    1.4 MB · Đọc: 32
Bạn thấy ổn thì ổn! :)
Xem file kèm. hihi ^o^
Mình xem file rồi. Chuẩn không cần chỉnh! Cảm ơn bạn nhiều nha.
P/s: và mình cũng ngộ ra 1 điều "không phải cứ muốn là được". Dù đã có đáp án nhưng để hiểu được và làm theo đáp án cần cả 1 quá trình dài lâu :)
Thanks bạn nha!
LongP
 
Mình xem file rồi. Chuẩn không cần chỉnh! Cảm ơn bạn nhiều nha.
P/s: và mình cũng ngộ ra 1 điều "không phải cứ muốn là được". Dù đã có đáp án nhưng để hiểu được và làm theo đáp án cần cả 1 quá trình dài lâu :)
Thanks bạn nha!
LongP
Nếu bạn đã, đang, và vẫn còn 'mê' diễn đàn GPE, thì bạn sẽ còn "ngộ" được nhiều điều thú vị khác nữa. ;)

Chúc bạn học tập vui với GPE!
/-*+//-*+//-*+/
 
Web KT
Back
Top Bottom