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

التعديل او تغيير المعادله للحصول على عدد الايام لكل شهر


Al Harthi

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

الاساتذه الكرام 

اتمنى نعاونكم بالتعديل او ايجاد معادله اخر في الملف المرفق .

المطلوب :- عدد ايام الاجازاة المرضيه للموظف في كل شهر مثال

1- اذا خرج الموظفي الى اجازه مرضيه ورجع في نفس الشهر تكون عدد الايم في العمل الخاص لذالك الشهر .

2- اذا خرج الموظف في اجازه مرضيه من تاريخ 30/04/2023 الى 02/05/2023 اجمالي الايام 3 ايام المطلوب ان تقسم هذه الايام وتكون في كل شهر شهر اربعه 1 وفي شهر 5 يومين ) 

اتمنى باني وفقة في الشرح ولكم مني جزيل الشكر والامتنان 

SL Data.xlsx

رابط هذا التعليق
شارك

تم عمل لمطلوب

=IF(MONTH($G5)=MONTH($F5);IF(MONTH($F5)=MONTH(I$3);$H5;"");IF(MONTH($F5)=MONTH(I$3);IF($H5+DAY($F5)>DAY(EOMONTH($F5;0));DAY(EOMONTH($F5;0))-DAY($F5)+1;$H5);IF(MONTH($G5)=MONTH(I$3);$H5-H5;"")))

 

SL Data.xlsx

  • Like 1
رابط هذا التعليق
شارك

عملت لك دالة vba لحساب أيام الإجازة لكل شهر
جرب وأخبرني
 

Option Explicit

Function Between(Value As Date, MinVal As Date, MaxVal As Date) As Boolean
    Between = Value >= MinVal And Value <= MaxVal
End Function


Function GetVacDays(ByVal StartDate As Date, ByVal EndDate As Date, inMonth As Date) As Variant
    Dim MinVal As Date, MaxVal As Date
    Dim yy As Integer, mm As Byte
    
    yy = Year(inMonth)
    mm = Month(inMonth)
    MinVal = DateSerial(yy, mm + 0, 1)
    MaxVal = DateSerial(yy, mm + 1, 0)
    
    If Between(StartDate, MinVal, MaxVal) Or _
       Between(EndDate, MinVal, MaxVal) Or _
       Between(MinVal, StartDate, EndDate) Or _
       Between(MaxVal, StartDate, EndDate) Then
       
       StartDate = IIf(StartDate > MinVal, StartDate, MinVal)
       EndDate = IIf(EndDate < MaxVal, EndDate, MaxVal)
       
       GetVacDays = CInt(EndDate - StartDate + 1)
    Else
        GetVacDays = ""
        
    End If
End Function

 

SL_Data_02.xlsm

  • Like 1
رابط هذا التعليق
شارك

6 ساعات مضت, Al Harthi said:

لك مني جزيل الشكر والتقدير 

 

ولكن واجهتني مشكله اذاالاجازه اكثر من شهرين المعادله لا تعمل بشكل صحبح تم تحديده باللون الاخظر 

 

SL Data (1).xlsx 17.11 kB · 2 downloads

=IF(MONTH(I$4)=MONTH($F5);IF($H5+DAY($F5)>DAY(EOMONTH($F5;0));DAY(EOMONTH($F5;0))-DAY($F5)+1;$H5);IF(AND(MONTH(I$4)>MONTH($F5);MONTH(I$4)<MONTH($G5));DAY(EOMONTH(I$4;0));IF(MONTH(I$4)=MONTH($G5);DAY($G5);"")))

 

SL Data (1).xlsx

  • Thanks 1
رابط هذا التعليق
شارك

21 ساعات مضت, AbuuAhmed said:

عملت لك دالة vba لحساب أيام الإجازة لكل شهر
جرب وأخبرني
 

Option Explicit

Function Between(Value As Date, MinVal As Date, MaxVal As Date) As Boolean
    Between = Value >= MinVal And Value <= MaxVal
End Function


Function GetVacDays(ByVal StartDate As Date, ByVal EndDate As Date, inMonth As Date) As Variant
    Dim MinVal As Date, MaxVal As Date
    Dim yy As Integer, mm As Byte
    
    yy = Year(inMonth)
    mm = Month(inMonth)
    MinVal = DateSerial(yy, mm + 0, 1)
    MaxVal = DateSerial(yy, mm + 1, 0)
    
    If Between(StartDate, MinVal, MaxVal) Or _
       Between(EndDate, MinVal, MaxVal) Or _
       Between(MinVal, StartDate, EndDate) Or _
       Between(MaxVal, StartDate, EndDate) Then
       
       StartDate = IIf(StartDate > MinVal, StartDate, MinVal)
       EndDate = IIf(EndDate < MaxVal, EndDate, MaxVal)
       
       GetVacDays = CInt(EndDate - StartDate + 1)
    Else
        GetVacDays = ""
        
    End If
End Function

 

SL_Data_02.xlsm 21.29 kB · 5 downloads

 

للاسف استاذي الكريم الكود لا يعمل معي 

رابط هذا التعليق
شارك

19 دقائق مضت, Al Harthi said:

للاسف استاذي الكريم الكود لا يعمل معي 

أنا قدمت لك كود ورفعت لك نفس المثال بعد تطبيق الدالة عليه وبه النتائج ظاهرة واضحة!!
لك كل الحق أن تختار ما يناسبك أخي، أما الكود لا يعمل .. غريب "شويتين".
موفق أخي.

نسيت أنبهك أن تحول ملفك الأصل من xlsx إلى xlsm

تم تعديل بواسطه AbuuAhmed
  • Like 1
رابط هذا التعليق
شارك

تم التعديل على الملف ليكون أثر مرونة واحترافية

أضفت ورقة اسمها العطل 

بإمكانك التحكم بالأيام والعطل الرسمية التي لا تريد احتسابها ضمن الإجازة

في الصورة المرفقة تم تحديد الجمعة والسبت كعطلة نهاية الأسبوع

وعدد من التواريخ كإجازات رسمية

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

00002.png

SL Data (1000).xlsx

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information