PDA

View Full Version : Hỏi về cách tính số ngày chẵn và lẻ trong 1 tháng bất kỳ



trandangkhoi
17-07-07, 09:21 AM
Các bác ơi , có một công thức nào có thể tính số ngày chẵn lẻ của một tháng bất kỳ mà không phải dùng VBA không

TranThanhPhong
17-07-07, 10:29 AM
Mình cũng chưa hiểu hết ý câu hỏi của bạn:

Giả sử ô A1: chứa ngày 13/08/2008

- Ngày này nếu là ngày chẵn thì hàm trả về chuỗi Ngày chẵn ngược lại thì trả về ngày lẽ: Công thức tại ô B1:
=IF(MOD(DAY(A1),2)=0,"Ngày chẵn","Ngày lẽ")

- Nếu bạn muốn biết tổng số ngày trong tháng nào đó và trả về tháng có tổng số ngày chãn hay lẻ thì dùng: Tại ô C1 nhập vào công thức
=IF(MOD(DAY(EOMONTH(A1,0)),2)=0,"Số ngày trong tháng chẵn","Số ngày trong tháng lẻ")

*Hàm EOMONTH trả về ngày cuối của một tháng trước hay sau ngày làm mốc tính (nhớ Add-Ins | Analysis Tools Pak trước khi sử dụng hàm này)

Xem thêm bài này trong nhóm hàm Ngày và thời gian: http://www.giaiphapexcel.com/forum/showthread.php?p=19238#post19238

TP.

trandangkhoi
17-07-07, 03:52 PM
Ý của mình là mình có 2 mốc thời gian bất kỳ nào đó( tương ứng với 2 ô trên excel), mình muốn xem trong đó có bao nhiêu ngày chẵn hoặc bao nhiêu ngày lẻ, ( ngày chẵn , ngày lẻ là ngày2 , ngày 1 ý chứ ko phải là thứ 2 , thứ 4 đâu )

trandangkhoi
18-07-07, 07:39 AM
Ặc các bác giúp giùm em một công thức tổng quát với , em nghĩ mãi không ra được, em dốt các hàm về thời gian này quá

chibi
18-07-07, 12:52 PM
A1=Ngày đầu, B1=Ngày cuối (trong cùng tháng)
Số ngày chẵn=
IF(MOD(B1-A1+1;2)=0;(B1-A1+1)/2;IF(MOD(DAY(A1);2)=0;INT((B1-A1+1)/2)+1;INT((B1-A1+1)/2)))

anhtuan1066
18-07-07, 02:38 PM
Nếu là trong cùng 1 tháng thì đâu cần công thức dài như thế nhỉ?
Ngày lẽ: =INT((B1-A1-MOD(B1,2)+2)/2)
Ngày chẳn= tổng số ngày - ngày lẻ

ANH TUẤN

trandangkhoi
19-07-07, 01:51 PM
các bạn , trong 1 tháng thì mình cũng tính được mình hỏi hai khoảng thời gian bất kỳ. Mình thấy có hàm Days360 tính số ngày giưa hai khoảng thời gian trong 1 năm .Nhưng mà còn có các tháng có 30, 31 hoặc 29 ngày thì sao. Theo mình là không dùng công thức thông thường được. Có đúng không.

Son2006
19-07-07, 04:13 PM
Có thể làm như sau:
1. Biết rằng số ngày chẵn trong mỗi tháng đều bằng 15 ngày (Trừ tháng 2 có 14 ngày)
2. Tính số ngày chẵn còn lại trong tháng tương ứng ô A1
3. Tính số ngày chẵn từ đầu tháng đến ngày B1
4. Cộng theo điều kiện tương ứng với tháng (Có tháng 2 hay không)
Nếu khoảng thời gian từ năm này sang năm khác thì hơi phức tạp 1 chút, nhưng chỉ cần kiểm tra số năm là ra

TranNguyenDanNhi
19-07-07, 04:52 PM
Sao không làm như anhtuan1066 mà phức tạp làm gì vậy các bạn :
Ngày đầu : A1
Ngày cuối : B1

---> Số ngày chẵn : =INT((B1-A1-MOD(B1,2)+2)/2)
--->Số ngày lẻ : = B1-A1+1 - INT((B1-A1-MOD(B1,2)+2)/2)

hm hm!!

anhtuan1066
19-07-07, 05:01 PM
Mai quá... có người có ý kiến rồi... tôi thấy Topic này khá hay, vậy mà chẳng ai tham gia nên tôi cũng làm biếng (chẳng lẽ tự nói 1 mình)... Ngay từ khi post bài lên tôi đã biết công thức có sai sót, đúng ra phải là: =INT((B1-A1-MOD(DAY(B1),2)+3)/2) (công thức 1)... nhưng công thức này cũng chỉ dùng dc trong tháng... còn khác tháng, khác năm thì sao?
Công thức trên tôi rút ra từ công thức tính số ngày Chủ nhật giữa 2 khoảng thời gian : =INT((B1-A1-WEEKDAY(B1)+8)/7) (công thức 2)... Hai công thức này có điểm tương đồng...nhưng có điều gì khác làm cho công thức 1 cho kết quả sai? Chỉ có 1 điểm duy nhất đó là hàm WEEKDAY cho kết quả tuần hoàn từ 1 đến 7,(sau thứ 2 phải là thứ 3.. sau thứ 7 phải là CN).. trong khi hàm MOD trong trường hợp này thì chưa chắc... sau ngày chẳn sẽ là ngày lẽ và ngược lại... nhưng đến ngày 31 thì... sau ngày lẽ 31 lại đến ngày 1 là ngày lẽ nữa...
Tất cả chúng ta đều có thể suy luận... Cũng giống như cách bạn Son2006 đã suy luận. Nhưng ở đây mọi người muốn có 1 công thức tổng quát cơ... công thức này phải luôn luôn đúng trong mọi trường hợp dù 2 móc thời gian là cùng tháng hay khác tháng, cùng năm hay khác năm
Mong các bạn đóng góp ý kiến.. Tôi cũng đang suy nghĩ nhưng chưa có tiến triển gì cả...
Mến
ANH TUẤN

TranNguyenDanNhi
19-07-07, 05:13 PM
Vậy tốt nhất là dùng VBA

Tính ngày T7, CH . . . thì dễ hơn bởi vòng tuần hoàn là 7 ngày.

Còn đây lại tùy tháng, tùy năm (nhuận) nữa.

Vì vậy cứ dùng VBA cho tiện (làm 1 hàm người dùng thôi mà)

nvson
19-07-07, 05:27 PM
Có lẽ việc tính ngày chẵn, lẻ trong một khoảng thời gian khác tháng, khác năm mà dùng các hàm của Excel để giải quyết thì cũng phức tạp đấy.
Người hỏi y/c là không dùng VBA, nhưng tôi đóng góp đoạn code VBA cho những ai cần...
Vào VBA, Insert Module, rồi thêm đoạn code sau:


Option Explicit
Public Function NgayChanLe(date1 As Date, date2 As Date, chanle)
Dim i, songaychan, songayle, so_thang
Dim dem1, dem2
'Tinh so thang
If Year(date1) = Year(date2) Then
so_thang = Month(date2) - Month(date1) + 1
Else
so_thang = (12 - Month(date1) + 1) + Month(date2) + (Year(date2) - Year(date1) - 1) * 12
End If
'Tinh so ngay chan, le
For i = 1 To so_thang - 2
songaychan = songaychan + Int(Day(DateSerial(Year(date1), Month(date1) + i + 1, 0)) / 2)
songayle = songayle + Day(DateSerial(Year(date1), Month(date1) + i + 1, 0)) - _
Int(Day(DateSerial(Year(date1), Month(date1) + i + 1, 0)) / 2)
Next i
'Tinh so ngay chan le cua thang dau tien
For i = Day(date1) To Day(DateSerial(Year(date1), Month(date1) + 1, 0))
If (i / 2 - Int(i / 2)) = 0 Then
dem1 = dem1 + 1
Else
dem2 = dem2 + 1
End If
Next i
'Tinh so ngay chan le cua thang cuoi cung
For i = 1 To Day(date2)
If (i / 2 - Int(i / 2)) = 0 Then
dem1 = dem1 + 1
Else
dem2 = dem2 + 1
End If
Next i
songaychan = songaychan + dem1
songayle = songayle + dem2
If chanle = 1 Then
NgayChanLe = songayle
Else
NgayChanLe = songaychan
End If
End Function

ThuNghi
19-07-07, 10:46 PM
Mình xin đóng góp code này.

Function songaychan(NgayCuoi As Date, NgayDau As Date) As Integer
Dim i As Integer
Dim ThoiGian As Integer
'lay hieu so ngaycuoi-ngaydau
If NgayCuoi < NgayDau Then
MsgBox ("Ban nhap sai-nhap lai songay(ngaycuoi,ngaydau)")
Exit Function
End If
ThoiGian = NgayCuoi - NgayDau
For i = 0 To ThoiGian
If Day(NgayDau + i) Mod 2 = 0 Then
songaychan = songaychan + 1
End If
Next i
End Function
Số ngày lẻ = ngày cuối - ngày đầu - songaychan +1

Mr Okebab
19-07-07, 11:26 PM
Mình cũng xin góp vui 1 hàm vậy:



Function SoNgay(NgayDau As Date, NgayCuoi As Date, Loai As String) As Integer
Dim i As Long
Dim Ngay As Integer
If NgayCuoi - NgayDau < 0 Then
SoNgay = 0
Else
For i = NgayDau To NgayCuoi
If Day(i) Mod 2 = 0 Then Ngay = Ngay + 1
Next i
If Loai = "Chan" Then
SoNgay = Ngay
ElseIf Loai = "Le" Then
SoNgay = NgayCuoi - NgayDau + 1 - Ngay
End If
End If
End Function


Tham khảo File bên dưới.

Mr Okebab
20-07-07, 10:27 AM
Ai cha cha... Xom tụ rồi đây! Toàn là các cao thủ... Các bạn ơi! Chẳng lẻ ko còn cách nào làm bằng công thức? Vì nếu chỉ đơn giản là tính số ngày chẳn lẻ mà dùng VBA thì có phí lắm ko? Nếu bất chợt có ai đó cần tính số ngày chẳn lẽ giữa 2 móc thời gian thì.. chỉ vài phép tính đơn giản tôi nhẩm cũng ra (bằng cách suy luận mỗi tháng luôn luôn có 15 ngày chẳn, trừ tháng 2)...
Chẳng lẻ bó tay nhỉ? Search trên Google hình như cũng ko có... Chắc tụi nước ngoài nó ko có khái niệm ngày chẳn lẻ? Ở VN có biển báo cấm xe lưu thông vào ngày chẳn hoặc ngày lẻ nên có khái niệm này chăng? Hi... hi...
ANH TUẤN

Nếu chỉ có thế thôi thì chưa đủ đâu.
Bác suy luận :
-Tìm số ngày chẵn
-Số ngày lẻ = Hiệu Số ngày - số ngày chẵn

Vấn đề là tìm ngày chẵn.

Và ta biết rằng 1 tháng thì luôn có 15 ngày chẵn, như vậy chỉ cần tính ra số tháng và nhân với 15.
Tuy nhiên nếu ngày bắt đầu và ngày kết thúc không phải là đầu hoặc cuối tháng
VD : Bắt đầu : 16/1/07; Kết thúc : 13/8/2008

Vậy thì lại bắt đầu tính:
- Trong tháng 1/2007
- Trong tháng 8/2007
- Từ tháng 2/2007 đến tháng 7/2008
(Và phải tính đến TH là cả ha ngày đều cùng tháng)
Không biết có làm được không, chứ theo mình hơi bị rắc rối đấy.

Tuy nhiên tính cho một mảng thì lại cực dễ :
VD : Có mảng ngày tên : NGAY
-->Số ngày chẵn : {=SUM(IF(MOD(DAY(NGAY);2)=0;1;0))}
-->Số ngày lẻ : {=SUM(IF(MOD(DAY(NGAY);2)=1;1;0))}

Thân!

Mr Okebab
20-07-07, 10:35 AM
Mình xin đóng góp code này.


Function songaychan(NgayCuoi As Date, NgayDau As Date) As Integer
Dim i As Integer
Dim ThoiGian As Integer
'lay hieu so ngaycuoi-ngaydau
If NgayCuoi < NgayDau Then
MsgBox ("Ban nhap sai-nhap lai songay(ngaycuoi,ngaydau)")
Exit Function
End If
ThoiGian = NgayCuoi - NgayDau + 1
For i = 0 To ThoiGian
If Day(NgayDau + i) Mod 2 = 0 Then
songaychan = songaychan + 1
End If
Next i
End Function

Số ngày lẻ = ngày cuối - ngày đầu - songaychan +1

Dear bác ThuNghi : bác đọc kỹ nhé :



Integer Data Type@import url(office.css);Integer variables (javascript:hhobj_4.Click()) are stored as 16-bit (2-byte) numbers ranging in value from -32,768 to 32,767. The type-declaration character (javascript:hhobj_5.Click()) for Integer is the percent sign (%).




32.767 = 16/09/1989

Vì vậy bác nên cho nó là Long hoặc Date

Thân!

trandangkhoi
20-07-07, 10:36 AM
Em có ý kiến thế này. Đếm các tháng giữa 2 khoảng thời gian(dựa vào ý kiến của bạn Anh Tuấn . Tại vì trong 1 năm các tháng có 28, 30 và 31 ngày đều cố định rồi . Sau có dùng lệnh IF để đặt điều kiện lên các tháng .Tất cả các tháng đều có 15 ngày chẵn ( trừ tháng 2) . còn số ngày lẻ thì lấy số ngày chẵn trừ đi. Nhưng mà tháng 2 còn có năm nhuận nữa chứ, không biết phải giải quyết thế nào

Mr Okebab
20-07-07, 10:49 AM
Em có ý kiến thế này. Đếm các tháng giữa 2 khoảng thời gian(dựa vào ý kiến của bạn Anh Tuấn . Tại vì trong 1 năm các tháng có 28, 30 và 31 ngày đều cố định rồi . Sau có dùng lệnh IF để đặt điều kiện lên các tháng .Tất cả các tháng đều có 15 ngày chẵn ( trừ tháng 2) . còn số ngày lẻ thì lấy số ngày chẵn trừ đi. Nhưng mà tháng 2 còn có năm nhuận nữa chứ, không biết phải giải quyết thế nào
Năm nhuận thì có ảnh hưởng gì cơ chứ ?? Khi năm nhuận : T2 có 29 ngày, như vậy vẫn có 14 ngày chẵn cơ mà!
Thân!

trandangkhoi
20-07-07, 12:54 PM
Cái này thì dùng VBA là hay nhất, mình nếu ra ý tưởng là không dùng VBA cho mọi người suy nghĩ xem còn cách nào khác hay ko, hay là ai đó có ý tưởng độc đáo nào đó( tại vì mình cũng mù tịt về VBA mà, chỉ ứng dụng các đoạn code của mọi người thôi). Chứ mà nếu có ứng dụng thì dùng VBA là hay nhất

anhtuan1066
20-07-07, 01:45 PM
Vậy thì chưa chắc... tôi đang có 1 ý tưởng:
1/- Công thức sẽ sai khi ngày từ 31 bước qua ngày 1 (vì ngày 31 là ngày lẻ, ngày 1 cũng lẻ, ko tuần hoàn)
2/- Ngày chẳn, ngày lẽ ko biến đổi tuần hoàn như hàm WEEKDAY
Vậy thì giã sử rằng ta loại hết ra tất cả những ngày 31 và ngày 29/2 (nếu có) ta sẽ dc 1 chuổi ngày luôn luôn biến đổi tuần hoàn... từ chẳn đến lẻ.. rồi từ lẻ đến chẳn... Thế là có thể áp dụng công thức 1 cách bình thường rồi... Ra kết quả xong... Số ngày lẻ sẻ dc cộng thêm mấy ngày mà ta vừa loại ra (mấy ngày mình loại ra luôn luôn là ngày lẻ)...
các bạn thử phát triển thêm ý tưởng xem...
ANH TUẤN

ThuNghi
20-07-07, 02:01 PM
Tạm thời, có 1 cách không dùng VBA như sau:
A1: ngaydau
B1: ngaycuoi
C1=SUMPRODUCT((MOD(DAY(DaysRng),2)=0)*1)
O1=A1
O2=IF(O1=0,0,IF(O1+1<=$B$1,O1+1,0))
On=IF(Oi=0,0,IF(Oi+1<=$B$1,Oi+1,0)) i=n-1, n#10.000
ta có name tên DaysRng:
=OFFSET(Sheet1!$O$1:$O$10000,0,0,COUNTIF(Sheet1!$O $2:$O$10000,">0"),1)
Làm cho vui thôi, chớ làm công thì cực lắm và thê nào
1/ Tính ngày chẵn của ngày đầu -> cuối tháng đầu
2/ Tính ngày chẵn của ngày đầu tháng cuối - ngày cuối tháng cuối
Có hàm if để xét day(dau) > day(cuoi)
3/ Xét trong tg đó có ?? tháng 2 => Tính ra số tháng *15 or 14
4/ Vất vả quá.

Son2006
21-07-07, 01:15 AM
Có thể dủng công thức tổng quát như sau:
2 thời điểm cho trước là A1 và B1 (B1>A1)
Gọi Sn là số năm của 2 mốc thời gian, tính bằng công thức Sn=year(B1)-year(A1)
Gọi Sa1 là số ngày chẵn từ đầu năm year(A1) đến ngày A1
công thức IF(MONTH(A1)>2,15*(MONTH(A1)-1)-1+INT((DAY(A1))/2),15*(MONTH(A1)-1)+INT((DAY(A1))/2))
Gọi Sb1 là số ngày chẵn từ đầu năm year(B1) đến ngày B1
Công thức
IF(MONTH(B1)>2,15*(MONTH(B1)-1)-1+INT((DAY(B1))/2),15*(MONTH(B1)-1)+INT((DAY(B1))/2))
Ta có số ngày chẵn trong [A1,B1] là
Sn*179-Sa1+Sa2
Tức là
(YEAR(B1)-YEAR(A1))*179-IF(MONTH(A1)>2,15*(MONTH(A1)-1)-1+INT((DAY(A1))/2),15*(MONTH(A1)-1)+INT((DAY(A1))/2))+IF(MONTH(B1)>2,15*(MONTH(B1)-1)-1+INT((DAY(B1))/2),15*(MONTH(B1)-1)+INT((DAY(B1))/2))
Công thức hơi dài nhưng do trong phương pháp tính có tính lặp lại Sa1 và Sb1 nên cũng không phức` tạp lắm
Tính được số ngày chẵn rồi, số ngày lẻ no problem
Tôi chưa kiểm tra kỹ lắm. bạn nào có thời gian test lại hộ

Mr Okebab
21-07-07, 07:30 AM
Có thể dủng công thức tổng quát như sau:
2 thời điểm cho trước là A1 và B1 (B1>A1)
Gọi Sn là số năm của 2 mốc thời gian, tính bằng công thức Sn=year(B1)-year(A1)
Gọi Sa1 là số ngày chẵn từ đầu năm year(A1) đến ngày A1
công thức IF(MONTH(A1)>2,15*(MONTH(A1)-1)-1+INT((DAY(A1))/2),15*(MONTH(A1)-1)+INT((DAY(A1))/2))
Gọi Sb1 là số ngày chẵn từ đầu năm year(B1) đến ngày B1
Công thức
IF(MONTH(B1)>2,15*(MONTH(B1)-1)-1+INT((DAY(B1))/2),15*(MONTH(B1)-1)+INT((DAY(B1))/2))
Ta có số ngày chẵn trong [A1,B1] là
Sn*179-Sa1+Sa2
Tức là
(YEAR(B1)-YEAR(A1))*179-IF(MONTH(A1)>2,15*(MONTH(A1)-1)-1+INT((DAY(A1))/2),15*(MONTH(A1)-1)+INT((DAY(A1))/2))+IF(MONTH(B1)>2,15*(MONTH(B1)-1)-1+INT((DAY(B1))/2),15*(MONTH(B1)-1)+INT((DAY(B1))/2))
Công thức hơi dài nhưng do trong phương pháp tính có tính lặp lại Sa1 và Sb1 nên cũng không phức` tạp lắm
Tính được số ngày chẵn rồi, số ngày lẻ no problem
Tôi chưa kiểm tra kỹ lắm. bạn nào có thời gian test lại hộ

Có một chút lệch nào đó, bác sửa lại một xíu nhé.
Bác xem File sẽ thấy.

Thân!

anhtuan1066
21-07-07, 02:21 PM
Ahhhhhhhh.... TÔI KHÔNG CAM TÂM...
Tôi có công thức này hình như sử dụng dc đây! Rất đơn giản.. nhưng ko biêt có chính xác ko vì tôi chỉ mới thử có 1 vài ngày, chủ yếu là những ngày vượt từ tháng có 31 ngày sang tháng khác (chẳng hạn từ 28-7 đến 5-8.. vân vân...)... Cũng đã kiểm tra từ đầu năm tới cuối năm... thấy..hình như đúng.. (Ai cha.. cũng chưa chắc)
Đây là tính số ngày lẻ
=SUM(IF(MOD(DAY((A1-1+ROW(INDIRECT("1:"&TRUNC(B1-A1)+1)))),2)=1,1,0))
Còn ngày chẳn thì... hoặc lấy tổng số ngày - kết quả vừa rồi.. còn ko thì:
=SUM(IF(MOD(DAY((A1-1+ROW(INDIRECT("1:"&TRUNC(B1-A1)+1)))),2)=0,1,0))
Ctrl + Alt + Enter nha!
hi... hi...
Nhờ bạn ttphong2007, bạn Hiếu và ThuNghi cùng các cao thủ khác kiểm tra giúp... và nếu nó đúng thì... có cách nào rút gọn dc nữa ko?
ANH TUẤN

ThuNghi
21-07-07, 02:58 PM
Quá hay, đúng rồi, đã test với VBA và mảng, trong # 50 năm từ 1954 - nay.
{ROW(INDIRECT("1:"&TRUNC(B1-A1)+1)}, bác này dùng hàm indirect, mod quá siêu.

Son2006
21-07-07, 03:21 PM
Có một chút lệch nào đó, bác sửa lại một xíu nhé.
Bác xem File sẽ thấy.

Thân!
Lệch do toán trồng cây đây mà. Vậy nên công thức tính ngày Sa1 cần tinh71 như số ngày chẵn từ đầu năm đến trứoc ngày A1:IF(MONTH(A1)>2,15*(MONTH(A1)-1)-1+INT((DAY(A1)-1)/2),15*(MONTH(A1)-1)+INT((DAY(A1)-1)/2))
Cuối cùng công thức là
(YEAR(B1)-YEAR(A1))*179-IF(MONTH(A1)>2,15*(MONTH(A1)-1)-1+INT((DAY(A1)-1)/2),15*(MONTH(A1)-1)+INT((DAY(A1)-1)/2))+IF(MONTH(B1)>2,15*(MONTH(B1)-1)-1+INT((DAY(B1))/2),15*(MONTH(B1)-1)+INT((DAY(B1))/2))

anhtuan1066
21-07-07, 05:42 PM
Tôi còn phát hiện ra những trò khác hay hơn từ công thức này:
-Có thể áp dụng công thức cho dử liệu nào có dạng là 1 chuổi sự kiện liên tục
-Từ đây có thể "đếm" bất cứ thứ gì tương tự như thế bằng cách tạo 1 "mãng giã lập"
-Sửa công thức đôi chút lại có 1 công thức khác có công dụng khác hơn
VD:
1/-Đếm xem có bao nhiêu ngày "chủ nhật" giữa 2 khoảng thời gian:
{=SUM(IF(WEEKDAY(..... =1,1,0))}
2/-Đếm xem có bao nhiêu ngày "thứ năm" giữa 2 khoảng thời gian:
{=SUM(IF(WEEKDAY(..... =5,1,0))}
3/-Đếm xem có bao nhiêu ngày 31 giữa 2 khoảng thời gian:
{=SUM(IF(DAY(..... =31,1,0))}
....
vân vân... và từa lưa hột dưa.. thứ gì ta có thể nghĩ ra...
Cám ơn bạn trandangkhoi đã đưa ra 1 chủ đề thú vị
ANH TUẤN

TranNguyenDanNhi
21-07-07, 09:53 PM
Tôi còn phát hiện ra những trò khác hay hơn từ công thức này:
-Có thể áp dụng công thức cho dử liệu nào có dạng là 1 chuổi sự kiện liên tục
-Từ đây có thể "đếm" bất cứ thứ gì tương tự như thế bằng cách tạo 1 "mãng giã lập"
-Sửa công thức đôi chút lại có 1 công thức khác có công dụng khác hơn
VD:
1/-Đếm xem có bao nhiêu ngày "chủ nhật" giữa 2 khoảng thời gian:
{=SUM(IF(WEEKDAY(..... =1,1,0))}
2/-Đếm xem có bao nhiêu ngày "thứ năm" giữa 2 khoảng thời gian:
{=SUM(IF(WEEKDAY(..... =5,1,0))}
3/-Đếm xem có bao nhiêu ngày 31 giữa 2 khoảng thời gian:
{=SUM(IF(DAY(..... =31,1,0))}
....
vân vân... và từa lưa hột dưa.. thứ gì ta có thể nghĩ ra...
Cám ơn bạn trandangkhoi đã đưa ra 1 chủ đề thú vị
ANH TUẤN

Rất cảm ơn về bài viết. Mình xin phụ họa vậy :

- Số ngày lẻ : {=SUM(IF(MOD(DAY(ROW(INDIRECT("A"&A1&":A"&B1)));2)=1;1;0))}

- Số ngày chẵn : {=SUM(IF(MOD(DAY(ROW(INDIRECT("A"&A1&":A"&B1)));2)=0;1;0))}

Thân!

Mr Okebab
21-07-07, 10:03 PM
Hay đấy, nhưng nên nhớ rằng do các bạn sử dụng số dòng ROW nên có những hạn chế :

Office 2003 : Tối đa 65.536 dòng = 05/06/2079 : đây là giới hạn của ngày cuối

Còn Office2007 Tối đa 1.048.576 dòng = 25/11/4770 : đây là giới hạn của ngày cuối

Thân!

ThuNghi
23-07-07, 08:37 AM
Ngày lẻ
{=SUM(IF(MOD(DAY(ROW(INDIRECT("A"&A1&":A"&B1)));2) =1;1;0))}
Ngày chẵn
{=SUM(IF(MOD(DAY(ROW(INDIRECT("A"&A1&":A"&B1)));2) =1;0;0))}
Ta có thể dùng hàm sumproduct thay thế như sau
=SUMPRODUCT((MOD(DAY(ROW(INDIRECT("A"&A1&":A"&B1))),2)=1)*1)
=SUMPRODUCT((MOD(DAY(ROW(INDIRECT("A"&A1&":A"&B1))),2)=0)*1)
Dùng names rút gọn:
DaysRng=DAY(ROW(INDIRECT("A"&Sheet1!$A1&":A"&Sheet1!$B1)))
=> CT như sau:
=SUMPRODUCT((MOD(DaysRng,2) =1)*1)
=SUMPRODUCT((MOD(DaysRng,2) =0)*1)