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

توزيع عدد ساعات الوقت الاضافى بشرط معينه


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

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

السلام عليكم
طبعا أنا تعمدت عدم شرح المدي CC لأترك لمن أراد أن يتعرف بنفسه علي ذلك
وهذا الجزء الذي يرد علي سؤال 
واين الربط بينها وبين (N4الفترة

 

 
 
سألني أيضا أخي العزيز /أبوحنين علي الخاص (قبل السؤال السابق) السؤال التالي

هل يمكن
استدعاء مجموع عدد X امام كل عامل فى كل شهر الى شيت X DAY
وعند تعير الشهر من C 1 فى شيت X DAY كما فى شيت 1
يتغير الاستدعاء
شهر 1استدعاء IL
شهر 2استدعاء BM
وهكذا ........ وهل الاستدعاء معادله ولا ماكرو

 

 

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

وقد أجلت إجابته لأنها تعتمد أيضا علي المدي الديناميكي

 
والإجابة بالمرفق إن شاء الله ستجدونها سهلة
تم إضافة عدد 2 مدي ديناميكي
C_C =MATCH('X Day'!$F$2,'Inbut data '!$1:$1,0)
P_ADR ="'Inbut data '!"&ADDRESS(2,C_C)&":"&ADDRESS(2,C_C+30)

تفضلوا المرفق

TIME SHEET 120_3.rar

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

  • الردود 54
  • Created
  • اخر رد

Top Posters In This Topic

اخى طارق جزالك الله خير ا على شرحك

فعلا شرح وافى جدا

وعلمينى اشياء لم اكن اعلمها

جزالك اللة كل خير

ونظرا لكونى لم استخدم من قيل قائمة Formula

فالامر جديد عليا

لاكن فتح مجال كبير لى

ان شاء الله سوف ابحث للاستفاده من قائمة Formula

ولو فى اى نصيحه فى ذلك الامر .... منتظرها من حضرتك

جزاك الله كل الخير 

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

عند تشغيل اخر ملف حضرتك ارسلته

وعند توزيع الساعات  تظهر رساله وجود خطاء

Run time error 6

 

 

Sub Arrange_Hours()
Application.ScreenUpdating = False
Dim sf As WorksheetFunction, W1 As Range, W2 As Range
Set sf = Application.WorksheetFunction

For lab = 1 To 120
    s_rw = (lab - 1) * 40 + 8: e_rw = s_rw + 30
    Range("E" & s_rw & ":E" & e_rw).ClearContents
    yy = Cells(s_rw - 6, "E"): i = 0: r = s_rw - 1
    If yy <> "D" And yy <> "U" And yy <> "N" Then GoTo 25
    OV_T = Cells(s_rw - 6, "D") * 24

        Select Case yy
        Case "N"
4          i = i + 1: If i > OV_T Then GoTo 25
6          r = r + 1
            If r > e_rw Then
               
                Set W1 = Range("B" & s_rw & ":B" & e_rw)
                Set W3 = Range("B" & s_rw + 1 & ":B" & e_rw + 1)
                Set W2 = Range("E" & s_rw & ":E" & e_rw)
               
                GN = sf.CountIfs(W1, "X", W3, "<>" & "X")   ' Groups of X
                If sf.SumIf(W1, "X", W2) * 24 / (sf.CountIf(W1, "X") - GN) >= 3 Then GoTo 25
                r = s_rw
            End If
            If Cells(r, "B") = "X" And Cells(r, "E") < 1 / 8 And Cells(r + 1, "B") = "X" Then Cells(r, "E") = Cells(r, "E") + 1 / 24: GoTo 4
            GoTo 6
           
        Case Else
10      i = i + 1: If i > OV_T Then GoTo 25
20      r = r + 1
            If r > e_rw Then
                Set W1 = Range("B" & s_rw & ":B" & e_rw)
                Set W2 = Range("E" & s_rw & ":E" & e_rw)
                If sf.SumIf(W1, "X", W2) * 24 / sf.CountIf(W1, "X") >= 3 Then GoTo 25
                r = s_rw
            End If
            If Cells(r, "B") = "X" And Cells(r, "E") < 1 / 8 Then Cells(r, "E") = Cells(r, "E") + 1 / 24: GoTo 10
           
            GoTo 20
        End Select
    
25 Next lab
Application.ScreenUpdating = True
End Sub

 

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

اخى العزيز طارق

يظهر الخطاء

عن مسح  اى مدخلات فى شهر واحد فى شيت  Inbut data

وكذلك عند توزيع الساعات فى شهر 2  وى شهر اخر

اظن ان الامر مرتبط  بان الخليه ليس بها مدخلات

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

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

 

أخي الكريم أبو حنين، أعتقد أن الخطأ Overflow تعني أنه عند تنفيذ الكود فإن الذاكرة امتلأت ولم يعد هناك ذاكرة لإكمال عمل الكود (هذا حسب رأيي) وربما الإخوة الكرام لهم رأي آخر... بالنسبة للخطأ في شيت "X Day" فقد تم وضع بعض الإضافات والتعديل على معادلات العمود X Day.

 

وأعتذر على عدم تصحيح خلل الكود...

 

أخوك بن علية

 

الملف المرفق : TIME SHEET 120_6.rar

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

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

 

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

 

أخوك بن علية

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

السلام عليكم اخى بن علية حاجى

جزالك الله خير

يكفينى اهتمامك وسعيك  واهتمام جميع الاخوه

واخص اخى طارق لانه تعب حدا معى

ربنا يجعل سعيه فى ميزان حسناته

وان شاء الله يكون لها حل

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

السلام عليكم

أخي العزيز

عذرا أنا كنت بعيد عن الإنترنت من ظهر الخميس

أولا: بالنسبة لمشكلتك في المشاركة 28 ، 29 (جزء أول ، جزء ثاني)

لو انتبهت لما أشرت لك إليه في مشاركتي 26 من أنه يوجد مجالين ديناميكيين جديدين لما وجدت خطأ

تفضل الملف بعد إضافة المجالين الديناميكيين 

C_C =MATCH('X Day'!$F$2,'Inbut data '!$1:$1,0)
P_ADR ="'Inbut data '!"&ADDRESS(2,C_C)&":"&ADDRESS(2,C_C+30)

لاحظ جيدا

1- أن الفترة التي كنت أنت فرضتها في الخلية الصفراء F2 لم تكن موجودة أساسا في بيانات الشيت  Inbut data

2- إخترت نسق xlsb بدلا من xlsm حيث يوفر ذاكرة أكثر

 

تفضل المرفق

 

 

TIME SHEET 120_5_A_xlsB.rar

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

اخى العزيز طارق

بعد التحيه

ارجو النظر فى المشكله التى تظهر فى المسشاركة رقم 26

Run time error 6

اتمنى من الله ان تكون بكل خير

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

السلام عليكم

أخي العزيز

أضف السطر الأصفر في أول الكود

ليصبح هكذا

 

Sub Arrange_Hours()
Application.ScreenUpdating = False
Dim sf As WorksheetFunction, W1 As Range, W2 As Range
Set sf = Application.WorksheetFunction
On Error Resume Next
For lab = 1 To 120
..
...
End Sub
رابط هذا التعليق
شارك

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

 

أخي الكريم أبو حنين، أعتقد أن أخي الحبيب طارق قد استوفى المطلوب جازاه الله عنا خير الجزاء، وقد كنت أحضر الملف بتطبيق الفكرة التي تتمثل في جعل الشيت المسمى "1" من صفحة واحدة مع تعديلات في المعادلات وبعض الإضافات حتى يتم جلب بيانات كل عامل مع إمكانية الطباعة باستعمال خاصية (من ... إلى ...) ولما أكملت العمل على الملف بهذه الفكرة لم أجد بدّا من أن أضع ما توصلت إليه وأرجو أن يروقك هذا التعديل...

 

أخوك بن علية

 

المرفق : TIME SHEET 120_7.rar

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

السلام عليكم اخى العزيز بن علية حاجى

اولا يسعدنى اضافاتك جدا  فكره جميله جدا .... وكنت اتمنى ان استفيد منها

ولاكن تكمن المشكله ان كل موظف نتعامل معه بشكا منفرد ... سواء بلاضافه او بالحزف

بمعنى سواء مكافئه او جزاء وطبعا ده هياثر على المعادلات  ومن هنا لن يفيد كارت واحد لان سيتم عليه تعديل مع كل حاله الموظف

وكان الاقتراح ان يتم اضافه 11 شيت مكله لعدد السنه كل شيت بشهر منفصل

حتى يسهل متابعه العامل وما تم له من اضافه او حذف

وفعلا تم عمل 12 شهر ولاكن تكمن المشكله ان الاستدعاء لا يتم بصوره صحيحه

فما الحل ؟

جزاك الله خير

واكرر اضافتك جميله جدا ومتتعه جدا

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

السلام عليكم

سألني أخي العزيز /أبوحنين علي الخاص السؤال التالي

 

كيف الحال اذا ما تم اضافه 11 شيت متمثل فى باقى اشهر السنه
والسبب فى ذلك
انه قد يتم خصم  عدد معين من البدلات  ... وهذه البدلات مرتبطه بمعادلات
كمان انه يراد الاحتفاظ بنسخه طبق الاصل من النسخه المطبوعه
هل يمكن ان نضيف 11 شهر ؟
واذا تم اضافتهم ... ما التعديل ؟

وقد رأيت أن الإجابة قد تفيد الإخوة ممن يتصفحوا الموضوع ففضلت أن أضع الإجابة هنا لإرفاق الملف

ليس هناك تعديل

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

أنا جربت الكود بعد إضافة الأمر السابق (باللون الأصفر)

جربته علي الشيت 1 والشيت 2

كله تمام

حفظته لك بصيغة xlsb لتوفير بعض من حجمه الكبير

ومازلت أري كما يري أخي بن علية أنه لاداعي أبدا لمثل هذا التكرار

فالبيانات واحدة موجودة في شيت Inbut data  فلاداعي أبدا للشيت CARD

ولاللشيتات من 2 إلي 12

ولاللشهور داخل الشيت 1 فيما عدا أول شهر فقط

يمكنك ، يكفيك فقط أن تستقر علي شكل الطباعة وتحفظ بها 

وحتي إذا كان كل ذلك مهم الإحتفاظ به ، فليس من المهم الإحتفاظ بالمعادلات التي تجعل حجم الملف 18 ميجا

وإذا كان مهما الإحتفاظ بالمعادلات فلاتجعلها في نفس الملف ممكن في ملف آخر مثلا

سهل الأمور علي نفسك لتوفر وقتك ووقت من يريد المشاركة

 

علي أية حال

هذا رابط للملف لأن حجمه اكبر من المسموح بالمنتدي

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

السلام علكم اخى العزيز

جزالك الله كل الخيرعلى مجهودك الرئع

اخر طلب وسامحنى فيه

اخى العزيز

اولا العمل الخاص بنا فى الصحراء بشركة بترول ومحور عملنا اسبوع واسبوع وكل منا من مكان ومحافظه مغايرة وقد يكون البعض مشترك فى المحافظه والمدينه

فاذا ما وقع لاحد ما حاله وفاة او مر به مصيبه ...  فنقوم بابلاغ اقرب الناس اليه من ناحيه الاقامه ( المحافظه – المدينه ) عن طريق الموبيل عدد المحافظات 27 محافظه  ( قائمة منسدلة )

فهل يمكن استدعاء الافرد فى يوم معين يتم تحديده ( 1/5/2013 )  ومن خلال رمز معين  مثل    E    X   T   S  D يتم تحديده

 

     

الحاله  (   )        فى يوم     3013/05/01

م      الاسم         الحاله       المحافظه       المدينه      رقم الموبيل  

 

جزالك الله كل خير

تم تعديل بواسطه ۩◊۩ أبو حنين ۩◊۩
رابط هذا التعليق
شارك

ومازلت أري كما يري أخي بن علية أنه لاداعي أبدا لمثل هذا التكرار

فالبيانات واحدة موجودة في شيت Inbut data  فلاداعي أبدا للشيت CARD

ولاللشيتات من 2 إلي 12

ولاللشهور داخل الشيت 1 فيما عدا أول شهر فقط

يمكنك ، يكفيك فقط أن تستقر علي شكل الطباعة وتحفظ بها 

وحتي إذا كان كل ذلك مهم الإحتفاظ به ، فليس من المهم الإحتفاظ بالمعادلات التي تجعل حجم الملف 18 ميجا

وإذا كان مهما الإحتفاظ بالمعادلات فلاتجعلها في نفس الملف ممكن في ملف آخر مثلا

سهل الأمور علي نفسك لتوفر وقتك ووقت من يريد المشاركة

 

 

اخى العزيز طارق

CARD  مهم جدا لانه حالة العامل طول السنه مجمعه فى صفحه واحده  كما انه يتم اضافه ايام  تانى من فائض الوقت الاضافى

اما الشيتات هى صورة لحاله كل عامل  خلال الشهر تظهر به الجزائات والمزايا ولا بد من الاحتفاظ بها

ولاكنى لا افهم   وحتي إذا كان كل ذلك مهم الإحتفاظ به ، فليس من المهم الإحتفاظ بالمعادلات التي تجعل حجم الملف 18 ميجا

جزالك الله خير على مجهودك

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

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

 

أخي الكريم أبو حنين، لا ضرورة من إنشاء 12 شيت (بعدد الشهور) خاصة بـ "سجل الوقت الشهرى لحقول كلابشة" فالنموذج الذي اقترحته عليك بصفحة واحدة في المشاركة رقم 40 بالموضوع يعتمد أيضا التغيير بالفترات (الشهرية) في الخلية N4 عند تغيير الفترة في هذه الخلية يتم جلب "سجل الوقت الشهري" للعامل الذي تم اختيار رقمه في الخلية V2... ويمكن أيضا تطبيق الفكرة نفسها على شيت CARD بإنشاء نموذج من صفحة واحدة لكل العمال، وسأحاول تحضيرها وتطبيقها على الملف... هكذا الملف يكون حجمه أقل بكثير مما هو عليه الآن... بالنسبة لطلبك الأخير لست أفهم ما تقصده بالضبط...

 

ملاحظة: ما دام الملف لم يكتمل العمل عليه فرجاء احذف خاصية "تمت الإجابة" (إن كان ذلك ممكنا)...

 

أخوك بن علية

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

اخى العزيز بن عليه حاجى

مرفق شيت يوضح المطلوب على ان يتم ادراجه فى اخر تعديل لاخ طارق

http://www.4shared.c..._KLABSHA_6.html

Book2.rar

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

اخى طارق

فى اخر تعديل  

عند الدخول على شيت 2  او 3 او 4 اى شييت

ويتم استدعاء بيانات الشهر

البيانات التى تاتى  هى المتواجده فى شهر 1

اى لا يتم استدعاء بيانات شهر 2 فى شييت 2 او بيانات شهر 3 فى شيت 3   ..... لاكن يتم استعدعاء شهر  1

وذلك فى جميع الاشهر 

اما  توزيع الساعات يعمل بصوره جيده

جزاكم الله كل الخير

تم تعديل بواسطه ۩◊۩ أبو حنين ۩◊۩
رابط هذا التعليق
شارك

السلام عليكم

فى اخر تعديل  
عند الدخول على شيت 2  او 3 او 4 اى شييت
ويتم استدعاء بيانات الشهر
البيانات التى تاتى  هى المتواجده فى شهر 1
اى لا يتم استدعاء بيانات شهر 2 فى شييت 2 او بيانات شهر 3 فى شيت 3   ..... لاكن يتم استعدعاء شهر  1
وذلك فى جميع الاشهر

 

 

أخي الحبيب

عندك حق

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

إضغط Ctrl-F3 لتستعرض النطاقات المسماة

ثم إفتح المجال cycle وغير محتواه إلي التالي

cycle=INDIRECT("'"&RIGHT(CELL("filename"),LEN(CELL("filename"))-SEARCH("]",CELL("filename")))&"'!$N$4")

ولكن سيلزمك ريفريش مع كل صفحة تدخلها

الريفريش (التنشيط) سيكون عن طريق F9

أو فتح أي معادلة (فتحها بالضغط علي F2) فقط ثم إنتر

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

السلام علكم اخى العزيز

جزالك الله كل الخيرعلى مجهودك الرئع

اخر طلب وسامحنى فيه

اخى العزيز

اولا العمل الخاص بنا فى الصحراء بشركة بترول ومحور عملنا اسبوع واسبوع وكل منا من مكان ومحافظه مغايرة وقد يكون البعض مشترك فى المحافظه والمدينه

فاذا ما وقع لاحد ما حاله وفاة او مر به مصيبه ...  فنقوم بابلاغ اقرب الناس اليه من ناحيه الاقامه ( المحافظه – المدينه ) عن طريق الموبيل عدد المحافظات 27 محافظه  ( قائمة منسدلة )

فهل يمكن استدعاء الافرد فى يوم معين يتم تحديده ( 1/5/2013 )  ومن خلال رمز معين  مثل    E    X   T   S  D يتم تحديده

 

     

الحاله  (   )        فى يوم     3013/05/01

م      الاسم         الحاله       المحافظه       المدينه      رقم الموبيل  

 

جزالك الله كل خير

أليس الأسهل أن تذهب للشيت الأول "Inbut data" وتعمل تصفية (فلتر) في هذا اليوم لكل من ليس فارغ

وسيأتي لك الفلتر بجميع العمال المتواجدين في نفس اليوم

ويمكنك من الفلتر إختيار فقط الــ   E ، X ، T ، S ، D  كما تريد

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

اخى طارق

مع الاسف لم استطيع  ان احقق الامر

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

إضغط Ctrl-F3 لتستعرض النطاقات المسماة

ثم إفتح المجال cycle وغير محتواه إلي التالي

cycle=INDIRECT("'"&RIGHT(CELL("filename"),LEN(CELL("filename"))-SEARCH("]",CELL("filename")))&"'!$N$4")

ولكن سيلزمك ريفريش مع كل صفحة تدخلها

الريفريش (التنشيط) سيكون عن طريق F9

أو فتح أي معادلة (فتحها بالضغط علي F2) فقط ثم إنتر

 

فلست ملم بلامر

فسامحنى  ... ارجو حلها من طرفك

جزالك الله خير

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

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