Đặt công thức cho CF với khoảng cách gần 45 ngày.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

LanAnh19

Thành viên chính thức
Tham gia
1/5/22
Bài viết
76
Được thích
8
Giới tính
Nữ
Nhờ các anh chị lập công thức trong CF có khoảng cách gần 45 như sau:
Ngày 01/01/yyyy
ngày 15/02/yyyy
ngày 01/04/yyyy
ngày 15/05/yyyy
ngày 01/07/yyyy
ngày 15/08/yyyy
ngày 01/10/yyyy
ngày 15/11/yyyy
Cảm ơn các bạn.
 
Cách làm thì bạn làm đơn giản như sau:
Giả sử CF1 của bạn có ngày là : 01/01/2022
Bạn copy CF1 paste 123: thì CF1 sẽ thành: 44562
Từ CF2 bạn làm công thức: CF2 = CF1+45 sau đó bạn kéo xuống dưới

sau khi kéo công thức xong, bạn copy rồi paste lại 123 một lần nữa.
Cuối cùng bạn chọn Format cell thành : date.
Kết quả sẽ thành:
01/01/2022
15/02/2022
01/04/2022
16/05/2022
30/06/2022
14/08/2022
28/09/2022
12/11/2022
27/12/2022
10/02/2023
27/03/2023
11/05/2023
25/06/2023
09/08/2023
23/09/2023
07/11/2023
 
Lần chỉnh sửa cuối:
Cách làm thì bạn làm đơn giản như sau:
Giả sử CF1 của bạn có ngày là : 01/01/2022
Bạn copy CF1 past 123: thì CF1 sẽ thành: 44562
Từ CF2 bạn làm công thức: CF2 = CF1+45 sau đó bạn kéo xuống dưới

sau khi kéo công thức xong, bạn copy rồi paste lại 123 một lần nữa.
Cuối cùng bạn chọn Format cell thành : date.
Kết quả sẽ thành:
01/01/2022
15/02/2022
01/04/2022
16/05/2022
30/06/2022
14/08/2022
28/09/2022
12/11/2022
27/12/2022
10/02/2023
27/03/2023
11/05/2023
25/06/2023
09/08/2023
23/09/2023
07/11/2023

Theo hình mẫu thì không phải 45 ngày mà là 1.5 tháng.

Nếu là ngày 1/1 kế tiếp sẽ là ngày 15/2

Nếu là ngày 15/1 kế tiếp sẽ là ngày 1/3. Ngày luôn là 1 hoặc 15.

.
 
Theo hình mẫu thì không phải 45 ngày mà là 1.5 tháng.

Nếu là ngày 1/1 kế tiếp sẽ là ngày 15/2

Nếu là ngày 15/1 kế tiếp sẽ là ngày 1/3. Ngày luôn là 1 hoặc 15.

.
Nếu vậy thì đề bài này mâu thuẩn rùi anh. Vì 1 tháng có 28, 30, hoặc 31 ngày thì đâu phải là 45 ngày. Để xem chủ thớt trả lời lại thế nào.
 
Với dữ liệu có quy luật như vậy có thể sử dụng thuần toán như sau
Mã:
A1=date(2023,roundup(row()*3/2-1,0),15^mod(row()+1,2))
 
Hic, giờ mới hiểu rõ giá trị của viết tắt. Lúc đầu bản thân cứ tưởng CF là "Conditional formatting".
:wallbash: :wallbash: :wallbash:
 
45 ngày là hạn trả nợ của thẻ tín dụng (?)
Thường mình thấy trong ngân hàng người ta tính cho sổ tiết kiệm (TK) (chuyện vay mình chưa biết) thì từ ngày 1 tháng 2 đến ngày 1 tháng ba là 1 tháng
(Gởi 1 triêu vào ngày 1/1 (TK online) thời hạn 3 tháng sẽ → 1/04 của năm đó.)

Có vẻ như vầy:

Ngày
1/1/2023​
2/15/2023​
=DATE(YEAR(J211),MONTH(J211),DAY(J211)+45)
4/1/2023​
 
Lần chỉnh sửa cuối:
...

Có vẻ như vầy:

Ngày
1/1/2023​
2/15/2023​
=DATE(YEAR(J211),MONTH(J211),DAY(J211)+45)
4/1/2023​
Công thức này rườm rà mpptj đống nhưng rốt cuộc chỉ là đem ngày cộng cho 45. Hoàn toàn không khác Date+45.
Và công thức không đạt yêu cầu. Nếu date là 01/04 thì kết quả sẽ là 16/05
 
Nhờ các anh chị lập công thức trong CF có khoảng cách gần 45 như sau:
Ngày 01/01/yyyy
ngày 15/02/yyyy
ngày 01/04/yyyy
ngày 15/05/yyyy
ngày 01/07/yyyy
ngày 15/08/yyyy
ngày 01/10/yyyy
ngày 15/11/yyyy
Cảm ơn các bạn.

Nhờ các anh chị lập công thức trong CF có khoảng cách gần 45 như sau:
Ngày 01/01/yyyy
ngày 15/02/yyyy
ngày 01/04/yyyy
ngày 15/05/yyyy
ngày 01/07/yyyy
ngày 15/08/yyyy
ngày 01/10/yyyy
ngày 15/11/yyyy
Cảm ơn các bạn.
Nếu muốn dùng công thức trong CF và yyyy là năm hiện tại thì dùng
PHP:
=IF(MOD(--MONTH(TODAY())+2;3)=0;DATE(YEAR(TODAY());MONTH(TODAY());1);IF(MOD(--MONTH(TODAY())+1;3)=0;DATE(YEAR(TODAY());MONTH(TODAY());15);""))
 
Đến giờ này vẫn chưa biết đề bài hỏi gì, nên trước khi giải bài phải "Nếu / Giả sử...". :D :D

Chịu thua luôn.
 
Đến giờ này vẫn chưa biết đề bài hỏi gì, nên trước khi giải bài phải "Nếu / Giả sử...". :D :D

Chịu thua luôn.
GPE là nơi rèn luyện kỹ năng:
1. Đoán ý người nhờ/hỏi
2. Dò dữ liệu sai (giùm người khác - nhất là các dữ liệu nà người hỏi đưa lên
3. Lập công thức khủng để giải quyết các trường hợp bảng tính thiết kế dỏm.
4. Chỉnh sửa công thức khủng đã lập ở trên vì người hỏi nhờ công thức mà khám phá ra mình còn thiếu một số lô gic.

Rất tiếc là việc rèn luyện này chỉ cho vui thôi chứ chúng chẳng giúp ích gì cho người luyện cả. Vì trên thực tế, các kỹ năng trên không xài được vào đâu cả:
1. Ý của người hỏi rất chủ quan và huộc về tầm cỡ thấp. Học đoán ý sếp hay thân chủ/ khách hàng thực dụng hơn.
2. Dữ liệu dỏm chỉ xảy ra cho người hỏi. Đối với người giúp, chuyện này khó xảy ra.
3. Chỉ người hỏi mới có mấy cái bảng thiết kế dỏm. Người thông thạo Excel thiết kế bảng tính rất gọn gàng, hiếm khi phải dùng công thức khủng.
4. Người quen bảng tính thì có đủ kinh nghiệm để khong phải thêm heetsn lpp gic này đến lô gic khác.

Túm lợi, việc đpán mò như ở đây chỉ là trò tiêu khiển quen thuộc của dân GPE. Nhiều jhi người ta cố ý đoán đại để có chuyện mà làm (ra tay gầy công thức), đợi hỏi cho rõ, thằng khác nhảy vào giật phần mất.


Rất tiếc
 
Hic, giờ mới hiểu rõ giá trị của viết tắt. Lúc đầu bản thân cứ tưởng CF là "Conditional formatting".
:wallbash: :wallbash: :wallbash:
CF là "Conditional formatting

Nếu muốn dùng công thức trong CF và yyyy là năm hiện tại thì dùng
PHP:
=IF(MOD(--MONTH(TODAY())+2;3)=0;DATE(YEAR(TODAY());MONTH(TODAY());1);IF(MOD(--MONTH(TODAY())+1;3)=0;DATE(YEAR(TODAY());MONTH(TODAY());15);""))
Cảm ơn chị nhiều, bài này phù hợp hơn
 
Nếu muốn dùng công thức trong CF và yyyy là năm hiện tại thì dùng
PHP:
=IF(MOD(--MONTH(TODAY())+2;3)=0;DATE(YEAR(TODAY());MONTH(TODAY());1);IF(MOD(--MONTH(TODAY())+1;3)=0;DATE(YEAR(TODAY());MONTH(TODAY());15);""))
Hàm luộm thuộm bỏ bố.
--MONTH(TODAY())+2 ==> toán tử ép kiểu "--" hoàn toàn không cần thiết bởi vì hàm Month vốn trả về số nguyên, vả lại đem + 2 nó cũng tự ép kiểu rồi.

Thuật toán lọc lấy 3 nhóm tháng quá sức rườm rà:
MOD(--MONTH(TODAY())+2,3)=0 là các tháng 1, 4, 7, 10
MOD(--MONTH(TODAY())+1,3)=0 là các tháng 2, 5, 8, 11
chỗ còn lại là các tháng 3, 6, 9, 12

Thuật toán giản dị hơn:
MOD(MONTH(TODAY()),3)+1
Kết quả: 1=nhóm tháng 3; 2=nhóm tháng 1; 3=nhóm tháng 2.
Hàm Choose sẽ cho phép chọn công thức khác nhau cho mỗi nhóm.

Thuật toán đưa ngày về 1:15 cũng luộm thuộm.
Để đưa ngày về một ngày khác trong tháng người ta trừ số ngày ra khỏi ngày và cộng ngày chỉ định
Today()-Day(Today()) + 1 đưa về ngày đầu tháng.

Chốt lại:
=Choose(MOD(MONTH(TODAY()), 3)+1, "", Today()-Day(Today())+1, Today()-Day(Today()) + 15)
Muốn nguy hiểm hơn chút thì thế này:
=IfError(B1-Day(B1)+Choose(MOD(MONTH(B1), 3)+1, "", 1, 15), "")

Chú thích:
Tôi chỉ sửa cái công thức dài ngoằng kia thôi. Việc đây có phải là giải ssaps cho yêu cầu của thớt tôi không màng tới. Có muốn màng cũng chẳng được, tôi có hiểu yêu cầu của thớt đâu.
 
Web KT

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

Back
Top Bottom