Giúp code tìm các ngày thứ 2 nếu biết Tháng và Năm

Liên hệ QC

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE ! Em cần đoạn code tìm các ngày thứ 2 dựa vào tháng năm ( Hiện tại em đang dùng chiêu Kéo từ ngày 1 đến hết tháng, sau đó hàm lọc weekday = 2 ) Thấy mất thời gian và phải dùng bảng phụ ). Xin mọi người giúp đở

215211

Sub camon()
Dim i as long
For i = 1 to 99999999999999999999 số viết 9 viết dài 5 km
Cảm ơn GPE = Cảm ơn GPE + i
Next i
Msbox (" Cỡi mada6 ra quán nhậu làm Chai Bia ")
End sub
 
Cái này trong C++ thì viết mần răng
 
Upvote 0
Cái này trong C++ thì viết mần răng
#include <một đống thư viện cần thiết>
using namepace std;
class LamOnLayDuc
{
public: // giành cho GPE
void GPELamThayMe() { // còn chờ chấm điểm
std::string s("Cỡi xe đạp hoặc xe máy, gõ bàn phím, tét cốt bỏ mẹ");
... // code chưa viết
}
private: // của riêng
XeHop XeRieng("Mada", 12E8); // class XeHop không cho xem code (bí mật mờ)
// chỉ biết rằng hàm dựng cho phép lập đối tượng với tên xe và giá tiền
void GoVaiDong() {
for (BigInt i = 1; i <= BigInt(9, Km(5)); i++) cout << "Cảm ơn GPE"; // class BigInt và Km lấy trên mạng
cout << "Cỡi Mada đi nhậu";
}
}
 
Upvote 0
Chào cả nhà GPE ! Em cần đoạn code tìm các ngày thứ 2 dựa vào tháng năm ( Hiện tại em đang dùng chiêu Kéo từ ngày 1 đến hết tháng, sau đó hàm lọc weekday = 2 ) Thấy mất thời gian và phải dùng bảng phụ ). Xin mọi người giúp đở

View attachment 215211

Sub camon()
Dim i as long
For i = 1 to 99999999999999999999 số viết 9 viết dài 5 km
Cảm ơn GPE = Cảm ơn GPE + i
Next i
Msbox (" Cỡi mada6 ra quán nhậu làm Chai Bia ")
End sub
Tham khảo code này thử:
Mã:
Sub Mnday()
Dim m As Integer, y As Integer, i As Byte, j As Byte
With shee1
    m = Range("B6")
    y = Range("C6")
    For i = 1 To Day(DateSerial(y, m + 1, 0))
        If Weekday(DateSerial(y, m, i), vbMonday) = 1 Then
            j = j + 1
            Range("F5").Offset(j) = DateSerial(y, m, i)
        End If
    Next i
End With
End Sub
 

File đính kèm

  • Liet ke Monday trong thang.xlsm
    15.9 KB · Đọc: 8
Upvote 0
Tham khảo code này thử:
Mã:
Sub Mnday()
Dim m As Integer, y As Integer, i As Byte, j As Byte
With shee1
    m = Range("B6")
    y = Range("C6")
    For i = 1 To Day(DateSerial(y, m + 1, 0))
        If Weekday(DateSerial(y, m, i), vbMonday) = 1 Then
            j = j + 1
            Range("F5").Offset(j) = DateSerial(y, m, i)
        End If
    Next i
End With
End Sub

1. Bạn chỉ cần tìm ngày đầu tiên, sau đó dùng vòng lăp +7

2. Lập một hàm tìm ngày đầu tiên. Hàm này nhận tham số.

Nếu sửa code của bạn thì như thế này:

Function ThuDauTien(ByVal m As Integer, ByVal y As Integer, ByVal thu) As Variant
' thực ra có công thức tìm ngày thẳng, không cần phải mò. Nhưng toi cứ tạm theo giải thuật của bạn
ThuDauTien = DateSerial(y, m, 1)
Do While Weekday(ThuDauTien, thu) <> 1
ThuDauTien = ThuDauTien + 1
Loop
End Function

Sub MnDay()
...
Dim d As Variant
d = ThuDauTien(m, y, vbMonDay)
Do
' ghi ra sheet ở đây
d = d + 7
Loop While Month(d) = m
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tham khảo code này thử:
Mã:
Sub Mnday()
Dim m As Integer, y As Integer, i As Byte, j As Byte
With shee1
    m = Range("B6")
    y = Range("C6")
    For i = 1 To Day(DateSerial(y, m + 1, 0))
        If Weekday(DateSerial(y, m, i), vbMonday) = 1 Then
            j = j + 1
            Range("F5").Offset(j) = DateSerial(y, m, i)
        End If
    Next i
End With
End Sub

Code của anh thì trên cả tuyệt vời . Thanh anh nhiều chúc anh 1 ngày nào đó rực rỡ với code bên dưới
Mã:
Sub codecuaanh()
Công đức hiện tại =  Công đức hiện tại + 1
If  Công đức hiện tại >= 100 ANd  Công đức hiện tại < 500 then
   Phương tiện tương lai=   Mazda 6 2.0
ElseIf  Công đức hiện tại >= 500 ANd  Công đức hiện tại < 1000 then
   Phương tiện tương lai=   BMW 320i đời 2019
Else
   Phương tiện tương lai=   Mercedes E300 AMG 2019
Endif
End sub
 
Upvote 0
Cái này bạn làm công thức cũng xong mà, này nha:
Tại [D7] bạn áp công thức =DATE(C6,B6,1)
Tại [F7] bạn xài công thức =D7+CHOOSE(WEEKDAY(D7),1,0,6,5,4,3,2)
Tại ô dưới [F7] bạn thiết lập công thức =F7+7
 
Upvote 0
Bổ sung cho bài #5, công thức tìm thẳng ngày của thứ như sau:

Function NgayThuNTrongThang(ByVal nam As Integer, ByVal thang As Integer, ByVal thu As Integer, ByVal N As Integer) As Variant
' hàm tìm ngày của ngày thu trong tuần thứ N trong tháng thang và năm nam
' thu theo các giá trị: chủ nhật = 1, thứ hai = 2, ...
NgayThuNTrongThang = DateSerial(nam, thang, 1 + 7 * N) - Weekday(DateSerial(nam, thang, 8 - thu))
End Function

Như vậy:
ThuHaiDaiTienTrongNamThang = NgayThuNTrongThang(Nam, Thang, vbMonday, 1)
 
Upvote 0
Web KT
Back
Top Bottom