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

رصيد الاجازات


orasound
إذهب إلى أفضل إجابة Solved by طارق محمود,

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

اعضاء المنتدى المحترمين

أرفقت ملفا يشرح طلبي , اعمل على تسجيل و متابعة الاجازة للموظفين بملف اكسيل

والان انا بحاجة إلى ترتيب هذه الاجازات و حساب عدد الايام حسب كل اجازة , ومتى اخذت اخر اجازة , الرجاء مساعدتي لاني بامس الحاجة له الان , مع العلم كل موظف لديه رقم وظيفي مستقل

مع الشكر

vacation.zip

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

السلام عليكم

مرحبا بك أخي بين أخوانك

المعادلات المطلوبة هي:

 =SUMPRODUCT(($A$2:$A$8=B17)*($E$2:$E$8=E17)*($F$2:$F$8)) 
و
= SUMPRODUCT(($A$2:$A$8=B17)*($E$2:$E$8=E18)*($F$2:$F$8))
و
 = LOOKUP(2,1/(A2:A8=B17),D2:D8)

أنظر المرفق

vacation2.rar

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

الأخ طارق

لك جزيل الشكر و أسأل العلي القدير انت و والاخ جازيا أن يجعلها في ميزان حسناتكم

بالنسبة للأخ طارق

بالنسبة لتاريخ اخر اجازة فيجب أن تكون الأسماء مرتبة لتظهر النتيجة , هل يمكن تعديل صياغة فيما لو لم تكن الأسماء مرتبة , فمثلا لو أدخل في اخر سطر اجازة جديدة بتاريخ قديم ستصبح هي اخر اجازة

ثانيا لو سمحت و أتمنى لا اكون قد أثقلت , هل من اللمكن أن نجعل الجدول ديناميكي بمعنى بمجرد ان تدرج اسماء جديدة لا حاجة لاعادة تعديل المعادلات والمجال ,

هل من الممكن استخراج جميع الاجازات لموظف معين و ليس مجرد اخر اجازة ووضعها في قائمة مستقلة

أخيراً : بحق استفدت من المعادلات المدرجة لديك

الأخ جازيا

لك الشكر , لكن الفورم يصبح طويلا جدا فالاسماء لدي بحدود 250 اسما و بالتالي تصبح الأمور معقدة بعض الشيء

أخيراً : بحق استفدت من المعادلات المدرجة لديكم

مع الشكر

تم تعديل بواسطه orasound
رابط هذا التعليق
شارك

  • أفضل إجابة

السلام عليكم

أخي العزيز

بالأكواد

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

الدالة الأولي لحساب عدد أيام الأجازات

 =vact(إسم,نوع الأجازة) 
وهذا كودها


Function vact(nam, typ As String) As Variant


last_row = [a1000].End(xlUp).Row

vact = 0


For i = 2 To last_row

	If Cells(i, 1).Value = nam Then

 	If Cells(i, 5).Value = typ Then

 	vact = vact + Cells(i, 6).Value

 	End If

	End If

Next i


End Function


الدالة الثانية لحساب آخر تاريخ أجازة
=last_v(إسم)
وهذا كودها

Function last_v(nam As String) As Date


last_row = [a1000].End(xlUp).Row

last_v = 0


For i = 2 To last_row

 nm2 = Cells(i, 1).Value

 dt = Cells(i, 4).Value

	If nm2 = nam And dt > last_v Then last_v = dt

Next i

End Function

تفضل المرفق

vacation3.rar

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

  • 1 year later...

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

استاذي الفاضل طارق حفظك الله

ارجو النظر في المرفق للمساعدة الشرح بداخله

أبو أنس حاجب

vacation33.rar

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

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

استاذي الفاضل طارق جزاك الله كل خير

ارجو افادتي لاني عند اضافة موظف جديد لاتعمل الدوال ارجو منك التاكد اذا كانت المعادلات في العمود N تفطي المدى كامل في العمود A حوالي 500 سطر او اكثر مع امكانية زيادة المدى

ابو انس

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

السلام عليكم

أخي الحبيب / أبو أنس

الطريقة الأولي الموضحة بالملف تعتمد علي قيمة الناتج في خلايا العمود F ، لذا يلزم تغيير معادلته لتعطي صفر بدلا من ""

المعادلة في الخلية F4 ستكون

=IF(A4="",0,D4-C4+1)

وإنسخها لباقي العمود

والمعدلات الأربع في العمود N للطريقة الأولي غير المجال ليكون 504 بدلا من 16 الموجودة

الطريقة الثانية لاتحتاج تعديلات

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

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

استاذي الفاضل تم المطلوب وهو المطلوب

صدقني دائما لااعرف بماذا ارد لعجزي عن التعبير لنبل اخلاقكم وكرمكم وسعة صدركم ولكن لاغريب على الانسان المسلم الحقيقي فهو يستمد ذلك من الله العزيز الكريم

لاسمك معزة خاصة لدي

أبو أنس اليافعي

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information