duy_quanNIIT
Thành viên mới
- Tham gia
- 8/8/08
- Bài viết
- 3
- Được thích
- 3
Nhiều lúc chúng ta phải đau đầu hoặc luôn cầm quyển lịch trong tay để tính ngày đến hoa cả mắt vừa mệt vừa mất công (Tôi sẽ hướng dẫn hai cách để tính ngày trong tháng và Tìm giá trị của biểu thức ngày tháng trả về là thứ mấy trong tháng)
1.Tính số ngày trong tháng
Trong Excel, bạn có thể dùng VBA để viết macro giải quyết vấn đề nào đó. Và vấn đề của chúng ta sẽ được giải quyết nhờ cài này:
Option Explicit
‘ Khai báo kiểu chứa thông tin thời gian
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
‘ Khai báo hàm API của Windows
Private Declare Sub GetLocalTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
‘ Khai báo biến cần dùng
Dim Days(0 To 6) As Integer
Dim MinDay As Integer
Dim MaxDay As Integer
‘ Macro đếm ngày
Sub DayCount()
Dim lpSystemTime As SYSTEMTIME
Dim iday As Integer
Dim idayofweek As Integer
‘ Khởi động counter ban đầu
For idayofweek = 0 To 6
Days(idayofweek) = 0
Next
‘ đọc thông tin ngày hiện tại
GetLocalTime lpSystemTime
‘ Tìm ngày nhỏ nhất và lớn nhất trong tháng
MinDay = 1
If (lpSystemTime.wMonth = 2) Then
MaxDay = 28
‘ Nên kiểm tra thêm năm nhuần, có 29 ngày
ElseIf (lpSystemTime.wMonth < 8 And lpSystemTime.wMonth Mod 2) Then
MaxDay = 31
ElseIf (lpSystemTime.wMonth > 7 And (lpSystemTime.wMonth Mod 2) = 0) Then
MaxDay = 31
Else
MaxDay = 30
End If
‘ Tính số ngày trong tuần của tháng hiện tại
iday = lpSystemTime.wDay
idayofweek = lpSystemTime.wDayOfWeek
While (iday <= MaxDay)
Days(idayofweek) = Days(idayofweek) + 1
iday = iday + 1
idayofweek = (idayofweek + 1) Mod 7
Wend
iday = lpSystemTime.wDay
idayofweek = lpSystemTime.wDayOfWeek
Days(idayofweek) = Days(idayofweek) - 1
While (iday >= MinDay)
Days(idayofweek) = Days(idayofweek) + 1
iday = iday - 1
If (idayofweek = 0) Then
idayofweek = 6
Else
idayofweek = idayofweek - 1
End If
Wend
‘ Hiển thị kết quả
MsgBox (“C.Nhat:” & Days(0) & “, T.Hai:” & Days(1) & “, T.Ba:” & Days(2) & “, T.Tu:” & Days(3) & “, T.Nam:” & Days(4) & “, T.Sau:” & Days(5) & “, T.Bay:” & Days(6))
End Sub
2.Tìm giá trị của biểu thức ngày tháng trả về là thứ mấy trong tháng
Ở đây chúng ta sẽ dùng hàm WEEKDAY cú pháp hàm này như sau:
WEEKDAY(serial_number,return_type)
trong đó :
serial_number:Giá trị ngày tháng trả về ví dụ(08/08/2008)
return_type: Kiểu trả về
kiểu trả về gồm 3 giá trị
a,kiểu trả về là 1: thì thứ 2 sẽ là 2, chủ nhật sẽ là 1 và thứ bảy sẽ là 7
ví dụ =weekday(08/08/2008,1)=6 -----> thứ 6
=weekday(09/08/2008,1)=7 -----> thứ 7
b, kiểu trả về là 2: thì thứ hai sẽ là 1,chủ nhật sẽ là 7 và thứ bảy sẽ là 6
=weekday(11/08/2008)=1 ------>thứ 2
tương tự bạn mở Excel kiểm tra luôn nhé
c, Kiểu trả về là 3: thứ 2 sẽ là 0, chủ nhật là 6 và thứ 7 là 5
ok xong rồi
thắc mắc liên hệ
vuduyquancdkt@gmail.com
0974894550
1.Tính số ngày trong tháng
Trong Excel, bạn có thể dùng VBA để viết macro giải quyết vấn đề nào đó. Và vấn đề của chúng ta sẽ được giải quyết nhờ cài này:
Option Explicit
‘ Khai báo kiểu chứa thông tin thời gian
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
‘ Khai báo hàm API của Windows
Private Declare Sub GetLocalTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
‘ Khai báo biến cần dùng
Dim Days(0 To 6) As Integer
Dim MinDay As Integer
Dim MaxDay As Integer
‘ Macro đếm ngày
Sub DayCount()
Dim lpSystemTime As SYSTEMTIME
Dim iday As Integer
Dim idayofweek As Integer
‘ Khởi động counter ban đầu
For idayofweek = 0 To 6
Days(idayofweek) = 0
Next
‘ đọc thông tin ngày hiện tại
GetLocalTime lpSystemTime
‘ Tìm ngày nhỏ nhất và lớn nhất trong tháng
MinDay = 1
If (lpSystemTime.wMonth = 2) Then
MaxDay = 28
‘ Nên kiểm tra thêm năm nhuần, có 29 ngày
ElseIf (lpSystemTime.wMonth < 8 And lpSystemTime.wMonth Mod 2) Then
MaxDay = 31
ElseIf (lpSystemTime.wMonth > 7 And (lpSystemTime.wMonth Mod 2) = 0) Then
MaxDay = 31
Else
MaxDay = 30
End If
‘ Tính số ngày trong tuần của tháng hiện tại
iday = lpSystemTime.wDay
idayofweek = lpSystemTime.wDayOfWeek
While (iday <= MaxDay)
Days(idayofweek) = Days(idayofweek) + 1
iday = iday + 1
idayofweek = (idayofweek + 1) Mod 7
Wend
iday = lpSystemTime.wDay
idayofweek = lpSystemTime.wDayOfWeek
Days(idayofweek) = Days(idayofweek) - 1
While (iday >= MinDay)
Days(idayofweek) = Days(idayofweek) + 1
iday = iday - 1
If (idayofweek = 0) Then
idayofweek = 6
Else
idayofweek = idayofweek - 1
End If
Wend
‘ Hiển thị kết quả
MsgBox (“C.Nhat:” & Days(0) & “, T.Hai:” & Days(1) & “, T.Ba:” & Days(2) & “, T.Tu:” & Days(3) & “, T.Nam:” & Days(4) & “, T.Sau:” & Days(5) & “, T.Bay:” & Days(6))
End Sub
2.Tìm giá trị của biểu thức ngày tháng trả về là thứ mấy trong tháng
Ở đây chúng ta sẽ dùng hàm WEEKDAY cú pháp hàm này như sau:
WEEKDAY(serial_number,return_type)
trong đó :
serial_number:Giá trị ngày tháng trả về ví dụ(08/08/2008)
return_type: Kiểu trả về
kiểu trả về gồm 3 giá trị
a,kiểu trả về là 1: thì thứ 2 sẽ là 2, chủ nhật sẽ là 1 và thứ bảy sẽ là 7
ví dụ =weekday(08/08/2008,1)=6 -----> thứ 6
=weekday(09/08/2008,1)=7 -----> thứ 7
b, kiểu trả về là 2: thì thứ hai sẽ là 1,chủ nhật sẽ là 7 và thứ bảy sẽ là 6
=weekday(11/08/2008)=1 ------>thứ 2
tương tự bạn mở Excel kiểm tra luôn nhé
c, Kiểu trả về là 3: thứ 2 sẽ là 0, chủ nhật là 6 và thứ 7 là 5
ok xong rồi
thắc mắc liên hệ
vuduyquancdkt@gmail.com
0974894550