[Bài tập vui]: Tìm ra mươi ngày 13 rơi vào thứ sáu gần hôm nay nhất!
Sẽ có 3 xị rượu cho ai giải đúng & sớm nhất bằng công thức!
Chúc các bạn vui vẻ & mạnh khỏe nhân dịp xuân về!
Cái này chắc bác sa phải nói rõ ra, công thức excel nhưng dùng một công thức hay thế nào? có cột phụ gì không? chứ chơi kiểu kéo 13/01/1921…13/02/1921.. cho đến 13/12/2121 rồi một cột là weekday(a1,1)=6 cũng kéo hết ra true, xong filter cũng cho kết quả
A2 = today()
Các ngày sau ngày hiện hành
B2 =SMALL(IF(WEEKDAY(EOMONTH($A$2,ROW($1:$100)-IF(DAY($A$2)>13,1,2))+13)=6,EOMONTH($A$2,ROW($1:$100)-IF(DAY($A$2)>13,1,2))+13,""),ROW(A1))
Các ngày gần nhất trước và sau ngày hiện hành
D2 =LOOKUP(2,1/(IF(WEEKDAY(EOMONTH($A$2,ROW($1:$200)-100)+13)=6,ABS($A$2-EOMONTH($A$2,ROW($1:$200)-100)+13),"")=SMALL(IF(WEEKDAY(EOMONTH($A$2,ROW($1:$200)-100)+13)=6,ABS($A$2-EOMONTH($A$2,ROW($1:$200)-100)+13),""),ROW(A1))),EOMONTH($A$2,ROW($1:$200)-100)+13)
Có khả năng sai với xác suất rất bé
Cả 2 là công thức mảng: Ctrl+Shift+Enter
Copy xống 10 dòng
www.giaiphapexcel.com/diendan/threads/b%C3%A0i-t%E1%BA%ADp-vui-t%C3%ACm-ra-m%C6%B0%C6%A1i-ng%C3%A0y-13-r%C6%A1i-v%C3%A0o-th%E1%BB%A9-s%C3%A1u-g%E1%BA%A7n-h%C3%B4m-nay-nh%E1%BA%A5t.154223/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Làm đại như này bác à, vì sắp hết giờ nên chưa kịp nghiên cứu thêm zụ abs gì đó nữa :
Góp vui: Chỉ lấy 10 ngày như kết quả của anh gửi.
Enter.
Dạ! tại anh thương em út nên mới khen như vậy, chứ lúc này trên diễn đàn của mình xuất hiện nhiều sao sáng và lạ nữa, còn em của anh thì rút lui vào bóng râm ở ẩn rồi anh. Lâu rồi mở trang GPE ra thấy anh có câu đố nên ngứa tay ngứa chân mà giải đố cho vui chung với anh em, chứ bài em giải 'dài ngoằn ngoèo' có hay gì đâu anh.
Xứ em ở mới bị bão tuyết nên mất điện, mất nước đang nằm co ro chờ ngày bình minh đến. Vừa may có điện, lướt qua 'nhà cũ' lại gặp anh 'nắm đầu kéo vô'.
Vậy em xin lưu giữ thịnh tình của anh dành cho em, hẹn một ngày không còn 'mắc dịch' nữa anh em hội mình sẽ tái hội.
Chúc anh và anh em sức khỏe, nhiều, càng nhiều, càng càng nhiều sức khỏe và may mắn, vui tươi.
Em của anh.
Của em dựa vào tiêu chí trước và sau, nên cũng không chính xác lắm nếu xét theo ngày gần nhất. Nếu dựa vào ngày gần nhất thì sẽ phải trừ cho ngày hiện tại và tìm 10 ngày sát nhất.
Chắc em đã hiểu nhầm vấn đề 😮 😮
Cách của bạn chỉ tìm 1 trong mười ngày đó mà thôi;
Đề bài là tìm cả mười ngày thứ sáu 13 gần nhất trong 1 lúc cơ!
Mình thử viết hàm mảng tự tạo & có nội dung sau:
Function T6N13(Optional Dat As Date)
ReDim Arr(1 To 10, 1 To 3)
Dim J As Long, W As Integer
If Dat < 9 Then Dat = Date
If Day(Dat) = 13 Then Dat = Dat – 1
For J = 1 To 10000
If Day(J + Dat) = 13 And Weekday(J + Dat) = 6 Then
W = W + 1: Arr(W, 2) = Format(J + Dat, "MM/DD/yy")
Arr(W, 3) = J: Arr(W, 1) = W
End If
If W = 10 Then Exit For
If Day(Dat – J) = 13 And Weekday(Dat – J) = 6 Then
W = W + 1: Arr(W, 2) = Format(Dat – J, "MM/DD/yy")
Arr(W, 3) = Space(1) & -J: Arr(W, 1) = W
End If
If W = 10 Then Exit For
Next J
T6N13 = Arr()
End Function
Lúc đầu mình cũng định đi theo hướng như vậy, nhưng 1 vài trường hợp cụ thể thì không thỏa yêu cầu & sẽ bị ai đó khó tính cự nự:
STT
Ngày
Del ta
1
12/13/19
-45
=T6N13(DATE(2020,1,27))
2
03/13/20
46
3
09/13/19
-136
4
11/13/20
291
5
07/13/18
-563
6
08/13/21
564
7
04/13/18
-654
8
10/13/17
-836
9
05/13/22
837
10
01/13/23
1082
Chúc các bạn có mùa xuân vui vẻ & hạnh phúc!
Theo thống kê thì chỉ có tháng 2 thì mệnh đề
i = i + 1:
mới vậy thôi, còn các tháng khác ta có thể
i = i + 2:
Thậm chí 1 số tháng ta có thể
i = i + 3:
Xin các bạn cho ý kiến nhận xét của mình tiếp về vấn đề này (?)
Nếu vậy thì chỉ cần xét số nào kiểm tra trước, số nào kiểm tra sau thôi, đỡ hơn là kiểm tra từng ngày.
Nếu đã có 2 danh sách ở A4 và B4 thì nối lại như sau:
=LET(db,A4#,da,B4#,rwb,ROWS(db),rwa,ROWS(da),IF(SEQUENCE(rwb+rwa)<=rwb,INDEX(db,SEQUENCE(rwb+rwa),1),INDEX(da,SEQUENCE(rwb+rwa)-rwb,1)))
Vì bài này mảng là Date nên có thể dùng cách này để gom 2 mảng
Nếu đặt thêm biến nữa công thức sẽ gọn, so index thì 2 mảng không cùng cấu trúc vẫn được vì nó luôn xét từ trên xuống
Góp vui dùng 365 cho bài này không tách khớp
Một công thức thôi, nhập vào ô bất kỳ (chỉ dùng Excel 2007 hoặc 2010)
Kết thúc bình thường Enter.
Kéo xuống dưới thành 20 dòng.
10 dòng đầu là 10 ngày trước, 10 dòng sau là 10 ngày sau. 20 ngày theo đúng thứ tự tăng dần từ quá khứ tới tương lai.
Có năm có 1, có năm có 2, 3 thứ 6 ngày 13. Trong công thức ở bài #35 tôi lấy trung bìng là 1 năm 1 lần thứ 6 ngày 13. Vì thế để xét 10 lần thứ 6 ngày 13 thì tôi xét 10 năm, tức 120 tháng. Vì thế có con số 120 – ROW($1:$120)
Dễ òm chứ gì, sắp xếp theo trình tự thời gian luôn nè.
Tính số lẻ đi cho nó máu!
=Find2DFriday13th(13)
Mà bài [URL='www.giaiphapexcel.com/diendan/threads/b%C3%A0i-t%E1%BA%ADp-vui-t%C3%ACm-ra-m%C6%B0%C6%A1i-ng%C3%A0y-13-r%C6%A1i-v%C3%A0o-th%E1%BB%A9-s%C3%A1u-g%E1%BA%A7n-h%C3%B4m-nay-nh%E1%BA%A5t.154223/post-1044921']#41 nó dài dòng quá nhỉ? Vậy thì rút gọn lại thôi!
Ủa mà quên, mỗi tháng chỉ có một ngày 13 duy nhất, mắc mớ gì mình tính theo ngày chi ta? Cập nhật lại:
Ủa các hạ không để ý sao? Tôi trích bài [URL='www.giaiphapexcel.com/diendan/threads/b%C3%A0i-t%E1%BA%ADp-vui-t%C3%ACm-ra-m%C6%B0%C6%A1i-ng%C3%A0y-13-r%C6%A1i-v%C3%A0o-th%E1%BB%A9-s%C3%A1u-g%E1%BA%A7n-h%C3%B4m-nay-nh%E1%BA%A5t.154223/post-1015895']#20 của chính tác giả, và tác giả dùng VBA để viết hàm, nên tôi mới dùng VBA để so sánh. Mà GPE đã từng có tiền lệ ai viết code ngắn nhất và có thời gian nhanh nhất hay sao??????
Kakakaka, các hạ quá khen rồi, công thức có từng này thôi: =Find2DFriday13th_HTN(10)
Vẫn còn dài lắm các hạ ơi!