Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

AnhExcel

Member
Hội viên mới
Bất kỳ ngôn ngữ lập trình nào cũng có thể giúp bạn giải quyết vấn đề này, ở đây là đếm số ngày thứ hai, thứ ba,... chủ nhật trong tháng hiện tại. Điều cốt lõi là giải thuật đếm ngày trong tháng, nếu bạn đã biết giải thuật thì chỉ cần miêu tả giải thuật bằng ngôn ngữ ưa thích. Trong Excel, bạn có thể dùng VBA để viết macro giải quyết vấn đề nào đó. Thí dụ đoạn macro sau sẽ giải quyết vấn đề của bạn:

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
 
Một số ý kiến thêm về việc đếm ngày trong một tháng

Không nhất thiết phải sử dụng tới hàm của Windows API đâu bạn AnhExcel à.
Chúng ta có thể tận dụng những gì của Excel và VBA cung cấp là được.

'Để lấy số ngày trong một tháng:
Dim ngaydauthang, ngaycuoithang, ngaydauthangsau, songaytrongthang

ngaydauthang = DateSerial(Year(Date), Month(Date), 1)
ngaydauthangsau = DateSerial(Year(Date)+IIf(Month(Date)=12, 1, 0) , IIf(Month(Date) = 12, 1, Month(Date) + 1) , 1)
ngaycuoithang = ngaydauthangsau - 1

songaytrongthang = Day(ngaycuoithang)

' Để coi trong tháng có bao nhiêu ngày thứ hai, thứ ba, ...
Dim ngay(6) as integer, sttngaytrongtuan
Dim i as Integer

For i = 1 to songaytrongthang
sttngaytrongtuan = Weekday(ngaydauthang + i - 1)
ngay(sttngaytrongtuan - 1) = ngay(sttngaytrongtuan - 1) + 1
Next

Như thế là có được cái mình cần rồi.
:)
 
Thấy mấy bạn trả lời cao siêu quá, đâu cần phải dùng VBA hay... chỉ cần kết hợp các hàm if, choose, weekday và int là tìm ra 1 tháng có bao nhiêu thứ mấy thôi mà
 
ThuNghi nói:
Thấy mấy bạn trả lời cao siêu quá, đâu cần phải dùng VBA hay... chỉ cần kết hợp các hàm if, choose, weekday và int là tìm ra 1 tháng có bao nhiêu thứ mấy thôi mà

Hi Thu Nghi,

thật sự ra các hàm trong excel cũng rất mạnh và nếu có sự kết hợp khéo léo những hàm này thì sẽ giải quyết được nhiều vấn đề. Tuy nhiên nó sẽ tuyệt vời hơn khi chúng ta khai thác được những tính năng của VBA cho những yêu cầu của cviệc

Chào mừng bạn đã gia nhập gia đình dân kế toán.

:laugh:
 
Mình mới tham gia xin góp 1 công thức tính mỗi tháng có bao nhiêu thứ hai, mong các bạn đóng góp, dùng hàm match, weekday và if
1/ A1: ngày đầu tháng cần tính tháng có ??? Mon
Days: =DAY(DATE(YEAR(Sheet3!$A$1),MONTH(Sheet3!$A$1)+1,1)-1) trả về tháng đó có bao nhiêu ngày
FiDayOfMonth=WEEKDAY(DATE(YEAR(Sheet3!$A$1),MONTH(Sheet3!$A$1),1))
Là thứ của ngày đầu tháng
???Mon=IF(OR(AND(Days>28,FiDayOfMonth=2),AND(Days>29,TYPE(MATCH(FiDayOfMonth,{1;2},0))<>16),AND(Days>30,NOT(ISNA(MATCH(FiDayOfMonth,{7;1;2},0))))),5,4)
2/ Ngày thứ hai đầu của tháng A2=$A$1+CHOOSE(WEEKDAY($A$1),1,0,6,5,4,3,2))
A3=IF(MONTH(DATE(YEAR(A2),MONTH(A2),DAY(A2)+28))<>MONTH(A1),4,5)
Trả về số ngày thứ hai của mỗi tháng
Thân
 
Sửa lần cuối:
Thực ra dùng VA rất hay, giải quyết được nhiều vấn đề như là liệt kê... còn hàm thì chỉ cho ra kết quả tại Cell nào đó thôi. Tôi thử đưa ra các công thức như vậy để anh em cùng nghiên cứu cho vui chớ chẳng có ý gì đâu. Thấy 4R này có nhiều chuyên mục khá hay. Các Mod và Admin cứ tiếp tục phát triển, 4R nào ban đầu cũng thể thôi hơi đâu mà nghe người ta nói này nọ. Bữa sau, nếu trích dẫn thì thêm câu "cám ơn tất cả các bạn và tất cả other 4R đã giúp tôi" là không ai nói gì cả. Hình như post lộn nơi. Xin đưa về đúng vị trí.
Chúc cho danketoan ngày càng lớn mạnh.
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

Mình mới tham gia xin góp 1 công thức tính mỗi tháng có bao nhiêu thứ hai, mong các bạn đóng góp, dùng hàm match, weekday và if
1/ A1: ngày đầu tháng cần tính tháng có ??? Mon
Days: =DAY(DATE(YEAR(Sheet3!$A$1),MONTH(Sheet3!$A$1)+1,1)-1) trả về tháng đó có bao nhiêu ngày
FiDayOfMonth=WEEKDAY(DATE(YEAR(Sheet3!$A$1),MONTH(Sheet3!$A$1),1))
Là thứ của ngày đầu tháng
???Mon=IF(OR(AND(Days>28,FiDayOfMonth=2),AND(Days>29,TYPE(MATCH(FiDayOfMonth,{1;2},0))<>16),AND(Days>30,NOT(ISNA(MATCH(FiDayOfMonth,{7;1;2},0))))),5,4)
2/ Ngày thứ hai đầu của tháng A2=$A$1+CHOOSE(WEEKDAY($A$1),1,0,6,5,4,3,2))
A3=IF(MONTH(DATE(YEAR(A2),MONTH(A2),DAY(A2)+28))<>MONTH(A1),4,5)
Trả về số ngày thứ hai của mỗi tháng
Thân

=DAY(DATE(YEAR(Sheet3!$A$1),MONTH(Sheet3!$A$1)+1,1)-1)
Nếu tháng đó là 12 thì sao? Về luận lý thì như vậy chưa chặt, tuy nhiên nó vẫn ra là 31 ngày, nếu tháng cần tính là 12.
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

đúng là những cao thu excel! nhu cac anh em lam sao ma theo nổi chứ! cac pro ơi cho em hỏi cái em mới học excel thui các pro khuyên em nên học trong sách nào chỉ cho em với:banghead:
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

=DAY(DATE(YEAR(Sheet3!$A$1),MONTH(Sheet3!$A$1)+1,1)-1)
Nếu tháng đó là 12 thì sao? Về luận lý thì như vậy chưa chặt, tuy nhiên nó vẫn ra là 31 ngày, nếu tháng cần tính là 12.

Nó cũng vẫn chặt như thường.
VD =date(2008,13,1) sẽ cho ra ngày 1/1/2009.
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

Công thức ngắn hơn nữa:
Giã sử
- tại A1 ta gõ vào chỉ số năm (ví dụ là 2008)
- tại B1 ta gõ vào chỉ số tháng (ví dụ là 1)
Vậy ta có các công thức sau:
1> Tính số ngày thứ 2:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0),2)+8)/7)
2> Tính số ngày thứ 3:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0)-1,2)+8)/7)
3> Tính số ngày thứ 4:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0)-2,2)+8)/7)
4> Tính số ngày thứ 5:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0)-3,2)+8)/7)
5> Tính số ngày thứ 6:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0)-4,2)+8)/7)
6> Tính số ngày thứ 7:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0)-5,2)+8)/7)
7> Tính số ngày CN:
=INT((DATE($A1,$B1+1,0)-DATE($A1,$B1,1)-WEEKDAY(DATE($A1,$B1+1,0)-6,2)+8)/7)
Tổng quát: Với 2 thời điểm X và Y cho trước (X < Y) thì
1> Tổng số ngày thứ 2 giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y,2)+8)/7)
2>Tổng số ngày thứ 3 giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y-1,2)+8)/7)
3>Tổng số ngày thứ 4 giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y-2,2)+8)/7)
4>Tổng số ngày thứ 5 giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y-3,2)+8)/7)
5>Tổng số ngày thứ 6 giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y-4,2)+8)/7)
6>Tổng số ngày thứ 7 giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y-5,2)+8)/7)
7>Tổng số ngày CN giữa 2 thời điểm X và Y
=INT((Y-X-WEEKDAY(Y-6,2)+8)/7)
--------------------------
(ThuNghi: Tên này nghe quen quen há)
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

Công thức ngắn hơn nữa:
Giã sử
- tại A1 ta gõ vào chỉ số năm (ví dụ là 2008)
- tại B1 ta gõ vào chỉ số tháng (ví dụ là 1)
Vậy ta có các công thức sau:
1> Tính số ngày thứ 2:

2> Tính số ngày thứ 3:

3> Tính số ngày thứ 4:

4> Tính số ngày thứ 5:

5> Tính số ngày thứ 6:

6> Tính số ngày thứ 7:

7> Tính số ngày CN:

Tổng quát: Với 2 thời điểm X và Y cho trước (X < Y) thì
1> Tổng số ngày thứ 2 giữa 2 thời điểm X và Y

2>Tổng số ngày thứ 3 giữa 2 thời điểm X và Y

3>Tổng số ngày thứ 4 giữa 2 thời điểm X và Y

4>Tổng số ngày thứ 5 giữa 2 thời điểm X và Y

5>Tổng số ngày thứ 6 giữa 2 thời điểm X và Y

6>Tổng số ngày thứ 7 giữa 2 thời điểm X và Y

7>Tổng số ngày CN giữa 2 thời điểm X và Y

--------------------------
(ThuNghi: Tên này nghe quen quen há)
Cám ơn bạn nhìn như vậy thấy rất rõ và dễ hiểu, có gì thắc mắc mong bạn chỉ thêm
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

Anh ơi, tại sao phải cộng 8 vậy, anh chỉ giùm em với
Cảm ơn anh nhiều.
Công thức ngắn hơn nữa:
Giã sử
- tại A1 ta gõ vào chỉ số năm (ví dụ là 2008)
- tại B1 ta gõ vào chỉ số tháng (ví dụ là 1)
Vậy ta có các công thức sau:
1> Tính số ngày thứ 2:

2> Tính số ngày thứ 3:

3> Tính số ngày thứ 4:

4> Tính số ngày thứ 5:

5> Tính số ngày thứ 6:

6> Tính số ngày thứ 7:

7> Tính số ngày CN:

Tổng quát: Với 2 thời điểm X và Y cho trước (X < Y) thì
1> Tổng số ngày thứ 2 giữa 2 thời điểm X và Y

2>Tổng số ngày thứ 3 giữa 2 thời điểm X và Y

3>Tổng số ngày thứ 4 giữa 2 thời điểm X và Y

4>Tổng số ngày thứ 5 giữa 2 thời điểm X và Y

5>Tổng số ngày thứ 6 giữa 2 thời điểm X và Y

6>Tổng số ngày thứ 7 giữa 2 thời điểm X và Y

7>Tổng số ngày CN giữa 2 thời điểm X và Y

--------------------------
(ThuNghi: Tên này nghe quen quen há)
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

Muốn đơn giản hơn huh ???

Giã sử
- tại B1 ta gõ vào chỉ số năm (ví dụ là 2014)
- tại B2 ta gõ vào chỉ số tháng (ví dụ là 1)

1- Ngày thứ máy ??
=TEXT(DATE($B$1,$B$2,1),"ddd")

2- Tháng nào ??
C5 =TEXT(DATE($B$1,$B$2,1),"mmm")

Tháng Sô
=MONTH(1&C5)

3- Năm nào ??
=TEXT(DATE($B$1,$B$2,1),"yyy")

4- Đi Cầy hay đi Nhậu ??
D7 --> 2/1/2014
D8--> =IF(ISERROR(VLOOKUP(WEEKDAY(D7),{2;3;4;5;6;7},1,0)),"Nhậu","Cầy")

D7 = 6/1/2014 , Nhậu hay Cầy ???

Ngoài ra còn cách dùng EOMONTH()

TS_zps3a96c3c1.jpg
 
Sửa lần cuối:
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

trước mình cũng tìm cái này google thần chưởng mãi ko ra, ko ngờ hôm nay vào forum tự dưng lại thấy, hài thật!
 
Ðề: Trong Excel làm cách nào đếm đươc tháng hiện tại có bao nhiêu ngày thứ hai,

Để đếm mỗi tháng có bao nhiêu ngày, tôi dùng cách đơn giản này:

Tại A2 sheet1 tôi gỗ số thứ tự là 1, B2 tôi gõ ngày tháng năm, C2 tôi gõ thứ của ngày đó, D2 tôi dùng hàm =MONTH(B2).

Bây giờ tôi chọn A2:D2 và Fill xuống, xong tôi sử dụng PivotTable là được kết quả, xem File đính kèm.

Các bạn hãy thử sheet3 tôi đã gõ sẳn, bây giờ chỉ việc chọn A2:D2 và Fill xuống đến dòng bao nhiêu thì tùy thích thử xem, kết quả như Sheet1.
 

Đính kèm

  • Tinh ngay.rar
    10.6 KB · Lượt xem: 285
Sửa lần cuối:

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top