Giúp công thức tính ngày kết thúc theo Ngày mở và chu kỳ và kiểu Tròn ngày (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

Văn Toàn 1996

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
5/6/23
Bài viết
106
Được thích
19
Chào tất cả mọi người GPE ! em cần 1 công thức tại ô B4 để tính ngày kết thúc dựa vào điều kiện ( Ngày bắt đầu, bước nhảy, Chu kỳ ) tại vùng B1:B3
Vi dụ: Ngày bắt đầu 3/3/2024 , bước nhảy trọn ngày là 10 ( 3,13,23 ) thì 5 chu kỳ sẽ là 13/4/2024 . Trường hợp rơi vào ngày 29,30,31 mà trong tháng đó không có ngày đó thì dời vào ngày 1 tháng sau. Ví dụ tháng tháng 2 không có ngày 30 thì dời ngày mãn về 1/3
Em xin chân thành cảm ơn

Ví dụ
Chu kỳ 1: 3/3/2024
Chu kỳ 2: 13/3/2024
Chu kỳ 3: 23/3/2024
Chu kỳ 4: 3/4/2024
Chu kỳ 5: 13/4/2024

Em xin nêu lý do em làm. Vì công ty em cho khách hàng nợ tiền, và chỉ muốn nhắc nợ theo những ngày cụ thể ví dụ như 10 ngày 1 lần, Ví dụ ngày đầu tiên mượn tiền là 2/7/2024 thì cứ các ngày trong tháng 2,12,22 là bên em sẽ nhắc nợ thanh toán. Chứ nếu +10 thì có tháng 30 có tháng 31 nó bị lệch ngày chỉ định

1722488646559.png
 

File đính kèm

Lần chỉnh sửa cuối:
Chào tất cả mọi người GPE ! em cần 1 công thức tại ô B4 để tính ngày kết thúc dựa vào điều kiện ( Ngày bắt đầu, bước nhảy, Chu kỳ ) tại vùng B1:B3
Vi dụ: Ngày bắt đầu 3/3/2024 , bước nhảy trọn ngày là 10 ( 3,13,23 ) thì 5 chu kỳ sẽ là 13/4/2024 . Trường hợp rơi vào ngày 29,30,31 mà trong tháng đó không có ngày đó thì dời vào ngày 1 tháng sau. Ví dụ tháng tháng 2 không có ngày 30 thì dời ngày mãn về 1/3
Em xin chân thành cảm ơn

Ví dụ
Chu kỳ 1: 3/3/2024
Chu kỳ 2: 13/3/2024
Chu kỳ 3: 23/3/2024
Chu kỳ 4: 3/4/2024
Chu kỳ 5: 13/4/2024

View attachment 302830
Mình đang thắc mắc, chu kỳ là 10 ngày. Bắt đầu từ mùng 1. Vậy ngày 31 tính sao nhỉ?
 
Mình đang thắc mắc, chu kỳ là 10 ngày. Bắt đầu từ mùng 1. Vậy ngày 31 tính sao nhỉ?
1722491679797.png
Ví dụ ngày bắt đầu 1/8/2024 10 ngày 1 lần (1,11,31) thì sau 10 chu kỳ rơi vào ngày 1/11/2024
Trường hợp như tháng 9 nếu không có ngày 31 thì +1 để nó thành 1/10/2024 .
 
Lần chỉnh sửa cuối:
View attachment 302832
Ví dụ ngày bắt đầu 1/8/2024 10 ngày 1 lần (1,11,31) thì sau 10 chu kỳ rơi vào ngày 1/11/2024
Trường hợp như tháng 9 nếu không có ngày 31 thì +1 để nó thành 1/10/2024 .
mình chỉ làm đơn giản thế này thôi, còn như đầu bài thì sẽ phải cộng/trừ với 1(trường hợp tháng 29/31 ngày) mới ra được như mong muốn
1722495860774.png
 
Lần chỉnh sửa cuối:
Đã làm thử nhưng thấy chưa hợp lý lắm, bác xem xem có đúng theo ý đồ của bác hay không.
 

File đính kèm

2/5/2024​
2/15/2024​
=D4+10
2/25/2024​
3/6/2024
=D6+10
3/16/2024​



PHP:
Function NgayKT(Dat As Date, Buoc As Integer, SoNgay As Integer) As Date
 NgayKT = DateAdd("D", Buoc * SoNgay, Dat)
End Function
 
Công thức cho ô B4 (của GPT)
=IF(DAY(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1)) > DAY(EOMONTH(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), 1), 0)), EDATE(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1), 1) - DAY(EDATE(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1), 1)), DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1))
 
ví dụ có vẻ kỳ lạ, từ 23/3 đến 3/4 chính xác là nhảy 11 ngày chứ đâu còn là 10 ngày nữa???
Đúng là 11 ngày, nhưng để khách hàng Mượn tiền chỉ cần nhở 3 ngày trong tháng là 3,13,23 để đóng tiền Lãi, vì nếu + 10 như anh nói thì tầm qua 3 4 tháng là nó Lệch ngày
Bài đã được tự động gộp:

Công thức cho ô B4 (của GPT)
=IF(DAY(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1)) > DAY(EOMONTH(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), 1), 0)), EDATE(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1), 1) - DAY(EDATE(DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1), 1)), DATE(YEAR(B1), MONTH(B1) + INT((DAY(B1) + B2 * B3 - 1)/31), MOD(DAY(B1) + B2 * B3 - 1, 31) + 1))
gpt hình như nó chưa hiểu ý. Nên kết quả vẫn không chính xác
1722513125112.png
Bài đã được tự động gộp:

Mình đang thắc mắc, chu kỳ là 10 ngày. Bắt đầu từ mùng 1. Vậy ngày 31 tính sao nhỉ?
Em xin nêu lý do em làm. Vì công ty em cho khách hàng nợ tiền, và chỉ muốn nhắc nợ theo những ngày cụ thể ví dụ như 10 ngày 1 lần, Ví dụ ngày đầu tiên mượn tiền là 2/7/2024 thì cứ các ngày trong tháng tiếp theo các ngày 2,12,22 là bên em sẽ nhắc nợ thanh toán. Chứ nếu +10 thì có tháng 30 có tháng 31 nó bị lệch ngày chỉ định
Bài đã được tự động gộp:

2/5/2024​
2/15/2024​
=D4+10
2/25/2024​
3/6/2024
=D6+10
3/16/2024​



PHP:
Function NgayKT(Dat As Date, Buoc As Integer, SoNgay As Integer) As Date
 NgayKT = DateAdd("D", Buoc * SoNgay, Dat)
End Function
Em xin nêu lý do em làm. Vì công ty em cho khách hàng nợ tiền, và chỉ muốn nhắc nợ theo những ngày cụ thể ví dụ như 10 ngày 1 lần, Ví dụ ngày đầu tiên mượn tiền là 2/7/2024 thì cứ các ngày trong tháng 2,12,22 là bên em sẽ nhắc nợ thanh toán. Chứ nếu +10 thì có tháng 30 có tháng 31 nó bị lệch ngày chỉ định
Có vẽ bác hiểu nhầm ý em
 
Lần chỉnh sửa cuối:
Em xin nêu lý do em làm. Vì công ty em cho khách hàng nợ tiền, và chỉ muốn nhắc nợ theo những ngày cụ thể ví dụ như 10 ngày 1 lần, Ví dụ ngày đầu tiên mượn tiền là 2/7/2024 thì cứ các ngày trong tháng 2,12,22 là bên em sẽ nhắc nợ thanh toán. Chứ nếu +10 thì có tháng 30
Nếu là vậy thì ra các chi nhánh ngân hàng nào có vốn Nhà nước >50% mà hỏi họ làm thế nào;
Mà đừng nói là CTi bạn đang cho vay lãi cao đó nha!
 
Nếu là vậy thì ra các chi nhánh ngân hàng nào có vốn Nhà nước >50% mà hỏi họ làm thế nào;
Mà đừng nói là CTi bạn đang cho vay lãi cao đó nha!
tôi cũng có cảm giác giống bác, mà ngày vay lại tính là 1 kỳ luôn thế, vậy ngay ngày đó là đóng lãi ngay khi nhận tiền luôn sao? haizzzz
 
View attachment 302832
Ví dụ ngày bắt đầu 1/8/2024 10 ngày 1 lần (1,11,31) thì sau 10 chu kỳ rơi vào ngày 1/11/2024
Trường hợp như tháng 9 nếu không có ngày 31 thì +1 để nó thành 1/10/2024 .
Mình chỉ thấy lạ là sao 31/10 nhắc rồi. 1/11 lại nhắc tiếp.
Ngày 1/10 nhắc lại 2 lần, không biết đúng không.
Mã:
=AGGREGATE(15;6;DATE(2024;{0\1\2\3}+MONTH($B$1);TEXT(DAY($B$1)+$B$2*(ROW($A$1:$A$14)-7);"[>31]a;[<=0]a;0"));ROW(A1))

Nếu cần số chu kỳ nhiều hơn, bạn thêm vào chỗ \3 \4\5\6.... Nếu máy bạn xài dấu "," thì đổi \ thành , và ; thành ,
 

File đính kèm

  • Screenshot_20240801_215033_com.microsoft.office.excel.jpg
    Screenshot_20240801_215033_com.microsoft.office.excel.jpg
    93.2 KB · Đọc: 7
tôi cũng có cảm giác giống bác, mà ngày vay lại tính là 1 kỳ luôn thế, vậy ngay ngày đó là đóng lãi ngay khi nhận tiền luôn sao? haizzzz
Bên công ty mình bán hàng Tạp hóa, cho khách công nợ, chứ không phải cho vay tiền
Bài đã được tự động gộp:

Nếu là vậy thì ra các chi nhánh ngân hàng nào có vốn Nhà nước >50% mà hỏi họ làm thế nào;
Mà đừng nói là CTi bạn đang cho vay lãi cao đó nha!
Bên công ty mình bán hàng Tạp hóa, cho khách công nợ, chứ không phải cho vay tiền
 
Mần xong cái này rồi còn phải tiếp tục cái "ngày nhắc phải né ngày cuối tuần".
Chứ cuối tuần, ngày lễ cũng gởi thư nhắc nợ à? :p:p:p
 
Nếu bạn đang áp dụng bước nhảy đẹp (5, 10) thì logic này dễ hiểu, ví dụ:
1) + bước nhảy 10:
1,11,21,1,...
5,15,26,30,5...
2) hay bước nhảy 5 (với ngày bắt đầu tròn 5)
5,10,15,20,25,30,5,...
Tuy nhiên, nếu bước nhảy khác, ví dụ 3,4,... hoặc bước nhảy 5 nhưng ngày bắt đầu khác, ví dụ:
3) 2,5,8,11,...(bước 3)
4) 4,9,14,19,24,29,3,8,...(bước 5)
thì đơn giản chỉ là ngày bắt đầu cộng thêm 1 bội số của bước.
Nếu ý của bạn là như vậy thì trong công thức cần tách ra các trường hợp riêng biệt để xét.
VD:
IF(bước=10, ...
IF( bước=5,...
 
=AGGREGATE(15;6;DATE(2024;{0\1\2\3}+MONTH($B$1);TEXT(DAY($B$1)+$B$2*(ROW($A$1:$A$14)-7);"[>31]a;[<=0]a;0"));ROW(A1))
Nếu:
- Ngày bắt đầu là: 20/02/2024
- Nhắc cách nhật: 5 ngày

Cũng vậy nếu:
- Ngày bắt đầu là: 27/02/2024
- Nhắc cách nhật: 2 ngày

Kết quả tại kỳ 1 (ngày bắt đầu) đều chưa chính xác, vì vậy cũng không đúng cho các kỳ kế tiếp.

Thân
Bài đã được tự động gộp:

Mần xong cái này rồi còn phải tiếp tục cái "ngày nhắc phải né ngày cuối tuần".
Chứ cuối tuần, ngày lễ cũng gởi thư nhắc nợ à? :p:p:p
Anh khéo lo! Trong chốn "võ lâm" làm gì có ngày cuối tuần anh!?

/-*+//-*+//-*+/
 
công thức nào cũng chỉ ổn định vài tháng đầu, sau cũng bị lệch hết.
giả sử 2 tháng 31 ngày cạnh nhau là thấy lệch lệch rồi.
 
Nếu:
- Ngày bắt đầu là: 20/02/2024
- Nhắc cách nhật: 5 ngày

Cũng vậy nếu:
- Ngày bắt đầu là: 27/02/2024
- Nhắc cách nhật: 2 ngày

Kết quả tại kỳ 1 (ngày bắt đầu) đều chưa chính xác, vì vậy cũng không đúng cho các kỳ kế tiếp.

Thân
Bài đã được tự động gộp:


Anh khéo lo! Trong chốn "võ lâm" làm gì có ngày cuối tuần anh!?

/-*+//-*+//-*+/
Em biết chỗ sai mà, đang tính sửa mà bận quá nên chưa sửa được. Lúc lập công thức cũng nghĩ đến rồi mà tự nhiên quên đưa vô.
Lỗi sai là ở chỗ chưa ràng buộc ngày bắt đầu kỳ 1 lớn hơn hoặc bằng ngày bắt đầu đã cho. Thêm hàm text nữa chắc ổn anh nhỉ.
 
Em biết chỗ sai mà, đang tính sửa mà bận quá nên chưa sửa được. Lúc lập công thức cũng nghĩ đến rồi mà tự nhiên quên đưa vô.
Lỗi sai là ở chỗ chưa ràng buộc ngày bắt đầu kỳ 1 lớn hơn hoặc bằng ngày bắt đầu đã cho. Thêm hàm text nữa chắc ổn anh nhỉ.
Bài này rắc rối lắm. Bạn phải chịu khó tóm ghi lại cái pattern. Phải có cái pattern mới đoán được những chỗ thừa thiếu mà phát triển thêm hàm.
 
Bài này rắc rối lắm. Bạn phải chịu khó tóm ghi lại cái pattern. Phải có cái pattern mới đoán được những chỗ thừa thiếu mà phát triển thêm hàm.
Dạ bác. Thực ra em cũng chỉ làm theo cái em hiểu thôi. Còn thực tế như nào thì chờ chủ thớt xác nhận rồi chỉnh sửa tiếp.

Mã:
=AGGREGATE(15,6,--TEXT(DATE(2024,{0,1,2,3}+MONTH(B1),TEXT(DAY(B1)+B2*(ROW(A1:A60)-30),"[>31]a;[<=0]a;0")),"[<"&B1&"]a"),B3)
 

File đính kèm

Em biết chỗ sai mà, đang tính sửa mà bận quá nên chưa sửa được. Lúc lập công thức cũng nghĩ đến rồi mà tự nhiên quên đưa vô.
Lỗi sai là ở chỗ chưa ràng buộc ngày bắt đầu kỳ 1 lớn hơn hoặc bằng ngày bắt đầu đã cho. Thêm hàm text nữa chắc ổn anh nhỉ.
Xem lại bài #3
1722491679797.png

Ví dụ ngày bắt đầu 1/8/2024 10 ngày 1 lần (1,11,31) thì sau 10 chu kỳ rơi vào ngày 1/11/2024
Trường hợp như tháng 9 nếu không có ngày 31 thì +1 để nó thành 1/10/2024 .
Ngay cả chủ thớt cũng tính sai:
1/ Tháng 8: có 4 ngày 1->11->21->31
2/ Tháng 9: có 3 ngày 1->11->21
3/ Tháng 10: có 4 ngày 1->11->21->31

Vậy, kỳ thứ 10 phải là ngày 21/10/2024, không phải ngày 1/11/2024 (chủ thớt tính tay), và cũng không là ngày 11/10/2024 (như công thức).

Yêu cầu đòi nợ nhắc ngày của thớt cũng hơi "máu lạnh", ngày 31/8 mới nhắc nợ, thì qua hôm sau ngày 1/9 lại nhắc nợ theo chu kỳ tháng mới. Lẽ ra nên bỏ ngày nhắc nào gần nhau, như bỏ ngày 1/9, kỳ tiếp là 11/9. Nếu tính như vậy thì 'cách nhật nhắc': 10 ngày, kỳ thứ 10 sẽ là ngày 31/10/2024 vậy mới hợp 'tình' hơn chút.

Thân
 
Sắp tới rồi đó, Excel chưỡi!

:D :D :D
Sắp tới rồi đó, Excel chưỡi!​
:D :D :D
Em nhớ là trong Excel chỉ có hàm Choose(), chứ không có hàm Chui() anh ơi!

Hễ nó là vầy, thì mình vậy, nó là kia, thì mình kịa...

Ai cũng vì cuộc sống mà làm việc, đụng đến 'công việc' cá nhân thì không hợp lẽ. Em chỉ nhớ bài giáo huấn thời em học tiểu học: "Chiếc cân của người buôn" (đại khái nhớ mang máng cái tựa đề), và cố chọn nghề cho hợp. Còn ai khác thì tùy "phước nghiệp" của họ, miễn bàn!

A Di Đà Phật

Chúc anh ngày vui
/-*+//-*+//-*+/
 
Xem lại bài #3

Ngay cả chủ thớt cũng tính sai:
1/ Tháng 8: có 4 ngày 1->11->21->31
2/ Tháng 9: có 3 ngày 1->11->21
3/ Tháng 10: có 4 ngày 1->11->21->31

Vậy, kỳ thứ 10 phải là ngày 21/10/2024, không phải ngày 1/11/2024 (chủ thớt tính tay), và cũng không là ngày 11/10/2024 (như công thức).

Yêu cầu đòi nợ nhắc ngày của thớt cũng hơi "máu lạnh", ngày 31/8 mới nhắc nợ, thì qua hôm sau ngày 1/9 lại nhắc nợ theo chu kỳ tháng mới. Lẽ ra nên bỏ ngày nhắc nào gần nhau, như bỏ ngày 1/9, kỳ tiếp là 11/9. Nếu tính như vậy thì 'cách nhật nhắc': 10 ngày, kỳ thứ 10 sẽ là ngày 31/10/2024 vậy mới hợp 'tình' hơn chút.

Thân
Bên em chỉ mặc định tròn 3 ngày là 1,11,21 nên ko có tính 31 a nhé .do dù tháng đó có 31 hay không có 31 vẫn là 1,11,31
 
Bên em chỉ mặc định tròn 3 ngày là 1,11,21 nên ko có tính 31 a nhé .do dù tháng đó có 31 hay không có 31 vẫn là 1,11,31
Sao bất nhất vậy bạn?
Ba hồi: 1,11,21; rồi ba hồi xác định 1,11,31
Thằng nào đúng hử!?

Vậy, bên bạn còn mặc định cái gì nữa?

Nếu:
- Cách 5 ngày nhắc: thì ngày nào được tính
Vd: ngày 2 bắt đầu -> 2;7;12;17;22;27 (6 ngày). Hay chỉ 2;7;12 (3 ngày thôi)

- Có các trường hợp nhắc khác: như 7 ngày, 15 ngày ..v.v. không? Nếu có thì 'mặc định' những ngày nào?

Đã gọi là 'chu kỳ' thì phải nhất quán chứ bạn, chứ ba hồi tính, ba hồi không tính thì chỉ có nước tự gõ tay.

Ngoài ra, khi đặt yêu cầu thì phải viết cho đủ ý:
-Trường hợp như vầy, thì lọc ra cái này, cái này, cái này.
- Trường hợp khác như vầy, thì lọc ra cái này, cái này, cái này.

Trả lời nhát gừng, như kiểu đánh đố thì chỉ tốn thời gian vô ích mà chả thu được kết quả gì.

Vậy nha, tôi cảm thấy đến đây đã đủ với những gì muốn nói.
 
Sao bất nhất vậy bạn?
Ba hồi: 1,11,21; rồi ba hồi xác định 1,11,31
Thằng nào đúng hử!?

Vậy, bên bạn còn mặc định cái gì nữa?

Nếu:
- Cách 5 ngày nhắc: thì ngày nào được tính
Vd: ngày 2 bắt đầu -> 2;7;12;17;22;27 (6 ngày). Hay chỉ 2;7;12 (3 ngày thôi)

- Có các trường hợp nhắc khác: như 7 ngày, 15 ngày ..v.v. không? Nếu có thì 'mặc định' những ngày nào?

Đã gọi là 'chu kỳ' thì phải nhất quán chứ bạn, chứ ba hồi tính, ba hồi không tính thì chỉ có nước tự gõ tay.

Ngoài ra, khi đặt yêu cầu thì phải viết cho đủ ý:
-Trường hợp như vầy, thì lọc ra cái này, cái này, cái này.
- Trường hợp khác như vầy, thì lọc ra cái này, cái này, cái này.

Trả lời nhát gừng, như kiểu đánh đố thì chỉ tốn thời gian vô ích mà chả thu được kết quả gì.

Vậy nha, tôi cảm thấy đến đây đã đủ với những gì muốn nói.
Tôi đã viết code được rồi cảm ơn anh
Mã:
Private Sub TinhchukyNew(ByVal hwnd As LongPtr)
  Dim t&, L&, w&, h&, w2&, h2&, sw&, sh&, SR As RECT, r As RECT, r2 As RECT, T2&, l2&, b1&, r1&, p As aaa, sp As aaa, sx As aaa, hw As LongPtr
  SR = ChukyStatt
  GetWindowRect hwnd, r
  
  hw = hAWHWnd
  GetWindowRect hw, r2
  With r
    w = .Right - .Left: h = .Bottom - .Top: sp.x = SR.Right - w - 30: sp.y = SR.Bottom - h - 30: sx.x = SR.Left: sx.y = SR.Top
    nam hw, sp
    nam hw, sx
    With r2
      w2 = .Right - .Left: h2 = .Bottom - .Top
    
      With p: .x = r2.Left: .y = r2.Top: nam hw, p: L = .x: t = .y: End With
      With p: .x = r2.Right: .y = r2.Bottom: nam hw, p: r1 = .x: b1 = .y: End With
    
      Select Case msbLocation
      Case ngay: thang p: nam hw, p
        L = p.x - w / 2: t = p.y - h / 2 - 30: GoSub p: l2 = L: T2 = t + 30
      Case chuky1: L = (w2 - w) / 2: t = (h2 - h) / 2 - 30: GoSub p: l2 = L: T2 = t + 30
      Case chuky5: L = (w2 - w) / 2: GoSub p: l2 = L: T2 = t + 30
      Case chuky7: L = (w2 - w) / 2: t = b1 - h - 20: GoSub p: l2 = L: T2 = t - 30
      Case chuky10:  t = b1 - h - 50: GoSub p: l2 = L + 20: T2 = t
      Case chuky15: t = t + 20: GoSub p: l2 = L + 20: T2 = t
      Case chuky20: L = w2 - w: t = b1 - h - 50: GoSub p: l2 = L - 30: T2 = t
      Case chuky31: L = w2 - w: t = t + 20: GoSub p: l2 = L - 30: T2 = t
      End Select
    End With

    With p: .x = L: .y = t: NgaydenTronNgay hw, p: L = .x: t = .y: End With
    With p: .x = l2: .y = T2: NgaydenTronNgay hw, p: l2 = .x: T2 = .y: End With
    apiTransparent hwnd, 0
    moveWindow hwnd, L, t, w, h, True: DoEvents
    .Left = L: .Top = t: .Right = L + w: .Bottom = t + h
  End With
  newRECT = r
  With newRECT2: .Left = l2: .Top = T2: .Right = l2 + w: .Bottom = T2 + h: End With
  
  SetTimer_VBObjectBox 2, hwnd

Exit Sub
p:
  L = IIf(L < sx.x, sx.x, IIf(L > sp.x, sp.x, L))
  t = IIf(t < sx.y, sx.y, IIf(t > sp.y, sp.y, t))
Return
End Sub
 
Nếu bạn đang áp dụng bước nhảy đẹp (5, 10) thì logic này dễ hiểu, ví dụ:
1) + bước nhảy 10:
1,11,21,1,...
5,15,26,30,5...
2) hay bước nhảy 5 (với ngày bắt đầu tròn 5)
5,10,15,20,25,30,5,...
Tuy nhiên, nếu bước nhảy khác, ví dụ 3,4,... hoặc bước nhảy 5 nhưng ngày bắt đầu khác, ví dụ:
3) 2,5,8,11,...(bước 3)
4) 4,9,14,19,24,29,3,8,...(bước 5)
thì đơn giản chỉ là ngày bắt đầu cộng thêm 1 bội số của bước.
Nếu ý của bạn là như vậy thì trong công thức cần tách ra các trường hợp riêng biệt để xét.
VD:
IF(bước=10, ...
IF( bước=5,...
Dạ a nói đúng rồi đó anh
 

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

Back
Top Bottom