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

بن علية حاجي

الخبراء
  • Posts

    4358
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    48

كل منشورات العضو بن علية حاجي

  1. السلام عليكم ورحمة الله إخواني الكرام، لما رأيت مشاركات أخي الحبيب خبور حفظه الله من كل سوء سعدت كثيرا وسيتم حل المسألة بإذن الله... والكود (ويبقى ثقيلا في التنفيذ) الذي كنت قد حضرته في هذا الشأن يشبه كثيرا كود أخي خبور ... Sub hben() Application.ScreenUpdating = False For J = 3 To 28 For I = 4 To 160 If J Mod 2 = 1 Then Cells(I, J) = Evaluate("SumProduct(( Name = B" & I & ")*(Month =" & Cells(1, J) & ")* Madine)") Else Cells(I, J) = Evaluate("SumProduct(( Name = B" & I & ")*(Month =" & Cells(1, J) & ")* Daine)") End If Next I Next J Application.ScreenUpdating = True End Sub وأسألك أخي خبور عن أمر فكرت فيه مليا (لمعرفتك أكثر بالأكواد) : هل يمكن إنشاء جدول (مصفوفة) عن طريق VBA نخزن فيها نتائج المعادلات ثم بعد الانتهاء منها نقوم بلصقها في النطاق المطلوب من الورقة؟؟؟ أخوكم بن علية
  2. السلام عليكم ورحمة الله أخي الكريم مصطفى، في الحقيقة لم أتوقف عن التفكير في مسألتك وقد قمت بتحضير كود يقوم بالتعويض الذي طلبته لكن للأسف بقي تنفيذ هذا الكود ثقيلا... ولا زلت أفكر وأبحث عن الحل المناسب والسريع إن لم يجد أحد فطاحلة الأكواد حلا لها قبل هذا... وآسف جدا لعدم التوصل للحل... أخوك بن علية
  3. السلام عليكم ورحمة الله أخي الكريم هذه معادلات أخرى لتنويع الحلول... للأحاد: =INT(MOD(A3/1;10)) للعشرات: =INT(MOD(A3/10;10)) للمئات: =INT(MOD(A3/100;10)) للآلاف: =INT(MOD(A3/1000;10)) وهكذا... أخوكم بن علية
  4. السلام عليكم ورحمة الله أخي الكريم أعتقد أن الخلل في المعادلة هو أنه تم إدخال القيم (وخاصة 06:00 و 08:30) على شكل نص باستعمال "" ومعادلة الجمع لا تعتبر النص... لذا أقترح عليك ضرب المعادلة في 1 أي إضافة 1* إلى المعادلة فتصبح المعادلة في الخلية J3: =IF(WEEKDAY(B3;16)=7;0;IF(WEEKDAY(B3;16)=6;"06:00";"08:30"))*1 =1*IF(WEEKDAY(B3;16)=7;0;IF(WEEKDAY(B3;16)=6;"06:00";"08:30")) مع تطبيق تنسيق الوقت hh:mm على هذه الخلايا... ولست أدري كيف تعمل معك الدالة WEEKDAY بالمدخل 16 لأنها لا تقبل إلا 1 (أو فراغا) أو 2 أو 3؟ أخوك بن علية
  5. السلام عليكم ورحمة الله أخي الكريم، هذا حل أول باستعمال الدالة SUMPRODUCT (إن كنت قد فهمت المطلوب).... أخوك بن علية متابعة الأقساط.rar
  6. السلام عليكم ورحمة الله أخي الكريم، إضافة إلى ما وضعه أخي الحبيب أبو أحمد جزاه الله عنا خير الجزاء أقترح أيضا المعادلات التالية بفرض أن العددين موجودين في الخليتين A1 و B1: المعادلة الأولى : =Max(A1:B)-MIN(A1:B1)+1 المعادلة الثانية : =ABS(A1-B1)+1 أو ببساطة (المعادلة الثالثة): =أكبر عدد - أصغر عدد + 1 وفي مثالنا : =155 - 150 + 1 والله أعلم
  7. السلام عليكم ورحمة الله أخي الكريم، إن الرمز "'" في المعادلة هو عبارة عن إضافة العلامة ' (نصية أي بين " ") والعلامة ' يجب وضعها في المعادلات بالنسبة لأسماء الشيتات المركبة من كلمتين أو أكثر (واحدة أمام اسم الشيت وأخرى في نهايته قبل علامة ! ) إذا كان يفصل بين هذه الكلمات علامة من العلامات النصية أو فراغات (عدا العلامة _ ) وبالنسبة للملف الذي يخصك فأسماء الشيتات المستعملة تحوي العلامة - (ناقص) ولذا تجدني وضعت في المعادلة (مثلا) "'"&C$2&"'!$C:$C" الذي تعني : 'Jan-2011'!$C:$C إذا كانت الخلية C2 تحوي الكلمة Jan-2011 الذي هو اسم شيت (مركب) من الشيتات في الملف... والله أعلم
  8. السلام عليكم ورحمة الله أخي الكريم، إن الرمز "'" في المعادلة هو عبارة عن إضافة العلامة ' (نصية أي بين " ") والعلامة ' يجب وضعها في المعادلات بالنسبة لأسماء الشيتات المركبة من كلمتين أو أكثر (واحدة أمام اسم الشيت وأخرى في نهايته قبل علامة ! )ويفصل بين هذه الكلمات علامة من العلامات النصية أو فراغات (عدا العلامة _ ) وبالنسبة للملف الذي يخصك فأسماء الشيتات المستعملة تحوي العلامة - (ناقص) ولذا تجدني وضعت في المعادلة (مثلا) "'"&C$2&"'!$C:$C" الذي تعني : 'Jan-2011'!$C:$C إذا كانت الخلية C2 تحوي الكلمة Jan-2011 الذي اسم شيت (مركب) من الشيتات في الملف... والله أعلم
  9. السلام عليكم ورحمة الله أخي الكريم، الملف بالداخل ما فيه مطلوب.... بن علية
  10. السلام عليكم ورحمة الله أخي الكريم، إذا كنت تريد أن تطبق التنسيق العام على الخلية التي تحوي معادلة تحويل الدقائق إلى ساعات فأقترح عليك استعمال المعادلة التالية: =(INT(A2/60)&","&MOD(A2;60))*1 أخوكم بن علية
  11. السلام عليكم ورحمة الله أخي الكريم، هذا حل آخر باستعمال الدالة SUMPRODUCT في الملف المرفق مع بعض الإضافات (إضافة سطر بالأعلى لترقيم الأشهر، إضفاة بعض التسميات لنطاقات ضرورية....) أخوكم بن علية Statement of Account (21.12.11).rar
  12. السلام عليكم ورحمة الله أخي الكريم، محاولة باستعمال الدالة DATEDIF في الملف المرفق... أخوكم بن علية استمارة 12د.rar
  13. السلام عليكم ورحمة الله أخي الكريم يمكن أيضا استعمال المعادلة التالية: =TEXT(INT(A2/60)&":"&MOD(A2;60);"hh:mm") أخوك بن علية
  14. السلام عليكم ورحمة الله أخي الكريم، يمكن استعمال المعادلة التالية: =TIME(INT(A2/60);(A2/60-INT(A2/60))*60;0) بفرض أن الخلية A2 تحوي القيمة 290 مع استعمال تنسيق الوقت hh:mm على الخلية التي وُضعت فيها المعادلة... والمعادلة تعطي النتيجة 04:50 يجب مراعاة الفاصلة والفاصلة المنقوطة في المعادلة حسب الجهاز... والله أعلم
  15. السلام عليكم ورحمة الله أخي الكريم، تم التعديل على عناوين الجداول لمطابقتها مع أسماء الشيتات وإدخال دالة INDIRECT على المعادلات حسب هذه التعديلات... إن شاء الله يكون في الملف المرفق ما يفي المطلوب ..... أخوك بن علية Indirect_ifs.rar
  16. السلام عليكم ورحمة الله أخي الكريم ، الخلل في المعادلة التي وضعتها في ملفك أنها لا تعتير الشروط المطلوبة إذ أن الجزء منها index(mohamed;2;4) يعطي دائما مضمون الخلية الموجودة في السطر الثاني والعمود الرابع من النطاق mohamed أي مضمون الخلية D6 الذي هو 10 باعتبار أن النطاق mohamed هو A5:Z25 من ورقة "مبيعات الفرع"... وقد تم في الملف المرفق تعديل في النطاق mohamed من A5:Z25 إلى A1:Z25 وتعديل المعادلة باستعمال الدالتين INDEX و MATCH وإن شاء الله تكون التعديلات مستوفاة للمطلوب... أخوك بن علية استدعاء بيانات بتاريخ معين.rar
  17. السلام عليكم ورحمة الله أخي الكريم ، هذا حل أول باستعمال الدالة IF في الملف المرفق... أخوك بن علية المصنف1.rar
  18. السلام عليكم ورحمة الله أخي الكريم، قم تم إضافة معادلة في العمود الأول (العمود A) من الورقة "التحضير اليومي" للترقيم التسلسلي التلقائي (ضروري لمعرفة عدد البيانات الفعلية) وباستعمال الكود التالي الذي يقوم بتغيير الأرقام في القائمة المنسدلة بالخلية B7 مع التحديث ثم الطباعة: Sub PRINT_ALL() Dim I As Integer Set xx = Application.WorksheetFunction mm = xx.Max(Sheets("التحضير اليومي").Range("A:A")) For I = 1 To mm If I <= mm Then [B7] = xx.Index(Sheets("التحضير اليومي").Range("B:B"), xx.Match(I, Sheets("التحضير اليومي").Range("A:A"), 0)) ActiveWindow.SelectedSheets.PrintOut Copies:=1 End If Next I End Sub أتمنى أن يكون في الملف المرفق كل المطلوب... أخوك بن علية PRINT111.rar
  19. السلام عليكم ورحمة الله أخي الكريم تم تغيير المعادلات حسب المطلوب... أخوك بن علية جلب بيانات.rar
  20. السلام عليكم ورحمة الله أخي الكريم ، التنسيق الذي وضعته موجود من ضمن التنسيقات على التاريخ بتصرف طفيف، وعمله يقوم بكتابة اسم شهر لتاريخ معين بالإنجليزية (كما ذكر أخي الحبيب عبد الله) ومن ثلاثة حروف الأولى... والله أعلم أخوكم بن علية
  21. السلام عليكم ورحمة الله أخي الكريم، أستسمح أخي الحبيب يحيى وأضيف معادلات مطبقة مباشرة على الملف... بالنسبة لمعادلة الحساب بالفترة فهي طويلة بعض الشيء ثم هي معادلة صفيف ويمكن أن تعمل هذه المعادلة لفترة شهر باختيار الشهر البداية والشهر النهاية نفسه... أتمنى أن تفي المعادلات بالغرض... أنظر الملف المرفق... أخوك بن علية تجميع شهري.rar
  22. السلام عليكم ورحمة الله أخي الكريم ، جرب المعادلة التالية (تجدها في المرفق): =TEXT(C3;"[$-400C]mmm")&" ("&IF(DAY(C3)<=15;"1st Half)";"2nd Half)") أخوك بن علية Date_req.rar
  23. السلام عليكم ورحمة الله أخي الكريم قمت بتفييرات على المعادلات في الملف المرفق... 12345.rar
  24. السلام عليكم ورحمة الله أخي الكريم، إذا لم يكن هناك شروط أخرى للحساب في حالة الغياب ، يمكن استعمال المعادلة التالية: =SUM(A2;B2) أخوك بن علية
  25. السلام عليكم ورحمة الله أخي الكريم ما دمت تريد أن يكون تحديث آلي للقسط اليومي أي كلما مضى يوم يزيد مبلغ القسط اليومي الى خلية (المجموع اليومي للمصروفات) يجب فعلا أن تضيف خلية لتاريخ الكراء (وقد وضعته في الخلية الصفراء بالملف المرفق) والمعادلة المستعملة للتحديث الآلي تكون كما يلي: ثمن القسط الشهري + ثمن القسط اليومي * (تاريخ اليوم - تاريخ الكراء) أي أن المعادلة في الملف تكون: =G7+H7*(TODAY()-J7) حيث: G7 تحوي "ثمن القسط الشهري" ، H7 تحوي "ثمن القسط اليومي" و J7 تحوي "تاريخ الكراء" والله أعلم Classeur1.rar
×
×
  • اضف...

Important Information