اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

الإخوة الأعزاء من واقع المعادلات التي يكتبها المبدعون في هذا المنتدى إستخدمت إحداها وكتبت معادلة لحساب عدد أيام الأشهر، ولكن هناك مشكلة بسيطة بالنسبة لشهر فبراير " شباط " فهو إما أن يكون 29 أو يكون 28 يوم في الغالب.

لذا أرجو من الإخوة المبدعين الإطلاع على المرفق وتعديل الكود لتتمكن الدالة من إحتساب أيام شهر فبراير بالشكل الصحيح .

لكم تحياتي

عدد أيام الأشهر.rar

قام بنشر (معدل)

السلام عليكم ورحمة الله

أخي الكريم، لحساب عدد أيام شهر معين في سنة معينة يمكن استعمال المعادلة التالية:

=DATE(C1;C2+1;0)-DATE(C1;C2;0)

حيث الخلية C1 تحوي السنة (مثال 2011) والخلية C2 تحوي رقم الشهر (مثال 8)

أخوك بن علية

تم تعديل بواسطه hben
  • Like 1
قام بنشر (معدل)

السلام عليكم ورحمة الله

أخي الكريم، لحساب عدد أيام شهر معين في سنة معينة يمكن استعمال المعادلة التالية:

=DATE(C1;C2+1;0)-DATE(C1;C2;0)

حيث الخلية C1 تحوي السنة (مثال 2011) والخلية C2 تحوي رقم الشهر (مثال 8)

أخوك بن علية

أخي بن علية جزاك الله خير أنا أعلم أنه يمكن حساب عدد أيم الشهر بطرق مختلفة فأنا على سبيل المثال أستخدم المعادلة التالية : (DAY(DATE(Year;Month+1;1)-1=

ولكن أنا أسأل إن كان بالإمكان تعديل الكود الذي كتبته ليتمكن من حساب عدد أيام شهر فبراير بشالكل الصحيح

أقدر لك إهتمامك وشكراً لمرورك.

تم تعديل بواسطه الغريب 1
قام بنشر (معدل)

السلام عليكم ورحمة الله

أخي الكريم، لم أفهم ما كنت تريده في الأول، بالنسبة للمعادلة التي وضعتَها في ردك السابق

=DAY(DATE(Year;Month+1;1)-1)
يمكن تبسيطها على الشكل :
=DAY(DATE(Year;Month+1;0)
أما الكود فقد تم تعديله بالنسبة لعدد أيام شهر فبراير حسب السنوات ويكون بالشكل :
Function MonthNumbers(Optional MIndex)

	Dim AllNumbers As Variant

	  xx = Day(DateValue("01/03/" & Year(Date)) - 1)

	  AllNumbers = Array(31, xx, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

	   If IsMissing(MIndex) Then

		MonthNumbers = AllNumbers

		Else

		Select Case MIndex

			Case Is >= 1

			 MonthVal = ((MIndex - 1) Mod 12)

			 MonthNumbers = AllNumbers(MonthVal)

		  Case Is <= 0 ' Vertical array

			 MonthNumbers = Application.Transpose(AllNumbers)

		 End Select

		 End If

End Function

حدث خلل في الرد ولست أدري ما السبب وقد تم تعديله...

والله أعلم

عدد أيام الشهر.rar

تم تعديل بواسطه hben
قام بنشر

أخي جزاك الله كل خير ولكن النتيجة عندي تعطي 2 لست أدري ما هو السبب، مع أني عندما أفتح الملف تكون النتيجة 28 ولكن عندما أقوم بالتعديل فتعطي النتيجة 2

سوف أحاول أن أبحث عن السبب

شكراً لك على جهودك

قام بنشر

إذا عدلنا الكود ليصبح بالكل التالي:

xx = Day(DateValue("03/01/" & Year(Date)) - 1)

فالنتيجة تصبح 28 كل شكري وامتناني أخي بن علية

قام بنشر

إخواني الكرام

بارك الله لكم

وبعد إذن أخي الفاضل بن علية

هذا كود بسيط إن كان الأمر هو فقط تحويل المعادلة لكود يؤدي نفس الغرض

....

وقد أضفت إمكانية تحديد العام ليحضر عدد ايام هذا الشهر لهذا العام تحديداً وإذا لم يتم تحديد العام فيعتبره الكود هو العام الحالي

الدالة:


Function MonthDays(myMonth As Integer, Optional myYear As Integer) As Integer

    MonthDays = Day(DateSerial(IIf(myYear = Null, Year(Date), myYear), myMonth + 1, 0))

End Function

قام بنشر (معدل)

إخواني الكرام

بارك الله لكم

وبعد إذن أخي الفاضل بن علية

هذا كود بسيط إن كان الأمر هو فقط تحويل المعادلة لكود يؤدي نفس الغرض

....

وقد أضفت إمكانية تحديد العام ليحضر عدد ايام هذا الشهر لهذا العام تحديداً وإذا لم يتم تحديد العام فيعتبره الكود هو العام الحالي

الدالة:


Function MonthDays(myMonth As Integer, Optional myYear As Integer) As Integer

	MonthDays = Day(DateSerial(IIf(myYear = Null, Year(Date), myYear), myMonth + 1, 0))

End Function

شكراً لك أستاذنا الكريم، ولكن هناك ملاحظة بسيطة لو سمحت : إذا لم تدخل السنة تعطي النتيجة 29 وليس 28 فشهر فبراير هذه السنة كان 28 يوم

تقبل شكري وامتناني

تم تعديل بواسطه الغريب 1
قام بنشر

السلام عليكم ورحمة الله

أخي الكريم بالنسبة للكود الدي وضعه أخي العزيز mas123 (والذي اشتقنا له كثيرا) يمكن تعديله بعد إذن الأستاذ بتغيير الكلمة NULL بالقيمة 0...

أخوك بن علية

قام بنشر

السلام عليكم ورحمة الله

أخي الكريم بالنسبة للكود الدي وضعه أخي العزيز mas123 (والذي اشتقنا له كثيرا) يمكن تعديله بعد إذن الأستاذ بتغيير الكلمة NULL بالقيمة 0

أخوك بن علية

تمام أخي بن علية

لم أنتبه لأني في الإكسل

كثيراُ ما نستخدم null في الأكسس

ولأن المتغير من نوع integer فإذا كان فارغاً تكون قيمته صفر

فتصبح الدالة


Function MonthDays(myMonth As Integer, Optional myYear As Integer) As Integer

	    MonthDays = Day(DateSerial(IIf(myYear =0, Year(Date), myYear), myMonth + 1, 0))

End Function

والسلام عليكم ورحمة الله وبركاته

  • Like 1
  • 6 years later...
قام بنشر

السلام عليكم 

عارف انه موضوع قديم 

ولكن يوجد معادلة بسيطة بدون Macro

=TEXT(EOMONTH(A1;0);"dd")

الدالة EOMONTH: لايجاد اخر يوم في الشهر لاي تاريخ

الدالة TEXT: بالتنسيق dd : لايجاد اليوم الاخير بالشهر

تقبلوا تحياتي 🙂

ايجاد عدد ايام الشهر.rar

  • Like 1
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information