اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

مهندس الاكسل

03 عضو مميز
  • Posts

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

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

مشاركات المكتوبه بواسطه مهندس الاكسل

  1. برغم أن الأمور فيما يبدو واضحة لديك، وحتى مع توضيحك الآخير

    إلا أنني فشلت بفهمها

    آمل توضيح الفكرة على ملف الاكسل، ما هو المطلوب برمجته لتوافق الفكرة التي لديك

    ضع النتيجة النهائية المطلوب الوصول لها على ملف الاكسل وبإذن الله ستتضح

  2. المطلوب ليس له حل مثالي، لأن التوزيع مبنى على قيم غير متوافقة (اللغات/ المبالغ)

    لكن من حسن الحظ أن عدد العملاء كبير في مقابل عدد الموظفين قليل، والتفاوت في المبالغ محدود وليس كبير

    وهذا جعل عملية التوزيع العشوائي تعمل بشكل جيد

    ولتأكيد ذلك: قمنا بتوزيع العملاء بالترتيب على الموظفين بالتناوب

    فظهرت المبالغ التالية:

    image.png.79b2c0a592225677d76c0fe4c7e7471e.png

    وهذه نسب متقاربة جدا جدا

    فأول نقطة تجاوزناها: الموظفين يوزعون بالتسلسل وهذا سيحقق الغرض

    بقي نقطة توزيع العملاء على شيتات الموظفين، 

    تم عمل شيت لكل موظف، ويمكن التحديث بزر التحديث في أعلى يمين الصفحة

    توزيع العملاء -3.xlsm

    وبالتوفيق

    • Like 2
  3. من باب الاستنارة برأيك أستاذنا الكبير ابراهيم الحداد

    هل ممكن استخدام هذا الكود؟ وم المحاذير من استخدامه؟ مع الشكر لتوضيحك، لأني مبتدأ في برمجة VBA للاكسل

     Sheets("ورقة1").Range("B2:G1414").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range("E1:E2"), CopyToRange:=Range("B4:G4"), Unique:=False

     

    طبعا الكود عبارة عن تسجيل ماكرو لعملية AdvancedFilter

    والملف مرفق، 
     
    وأكرر شكري أستاذي الكريم

    المصنف1 (1).xlsm

    • Like 1
  4. مرفق المطلوب ،

    وعليك نقل المعادلة للمكان المطلوب لأنه غير واضح في الملف (بيانات كثيرة ولم يظهر لي مكان الصافي ومكان المعادلة 😆)

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

    =IF(E12-2000<=0;0;IF(E12-2000<=250;(E12-2000)*0.125;(E12-2250)*0.1+31.25))

    مع ملاحظة أن E12 هي الخلية التي تحتوي (الصافي)

    لاحظ أنه لاداعي للضرب بـ 12 ثم القسمة بعد ذلك على 12

    فبدلا من الضرب بـ 12 وخصم 24000

    أصبحنا نطرح 2000 مباشرة ونحسب القسط الشهري مباشرة

    وللتأكيد قمت على اليسار باستخدام التفصيل الذي ذكرته أنت للحساب (الضرب بـ 12 ثم خصم 24000 ثم ... ثم... ثم...)

    وقارنتها بالمعادلة المختصرة التي اختصرتها أنا 

    والنتائج نفسها

    لنجعل الحياة أسهل 😄

    على العموم إذا كنت مصر على الطريق الطويل فقد عملت لك معادلة مخصوص لاقناعك فقط
    تجدها أسفل المعادلة المختصرة ولا تقلق فيها الضرب بـ 12 ثم القسمة على 12

    =(IF((E23*12)-24000<=0;0;IF((E23*12)-24000<=3000;((E23*12)-24000)*0.125;((E23*12)-27000)*0.1+375)))/12

     

    ملاحظة أخرى: افترضنا أنه إذا كان الصافي أقل من 2000 فلا يوجد عليه ضريبة، أليس كذلك؟

     

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

    مرتبات.xls

    • Like 1
  5. الحل رقم 1 يحدد لك ما مجموعه صفر لدى العميل لكامل الفواتير وليس لبعض الفواتير

    بمعنى لو العميل لديه 3 فواتير، اثنان منهما مجموعهم صفر، فهذا لا يحدد الحل رقم 1 ، ويبقى هذا العميل بدون تحديد

     

    ممكن أن نخرج بالحل رقم 3

    وهو أن يتم تحديد الفاتورتين لدى نفس العميل التي مجموعها صفر

     

    طبعا الموضوع أكثر تعقيدا، والسبب أنه في حال تكررت فاتورتين بنفس المبلغ مثلا

    2500

    2500

    ثم وردت فاتورة ثالثة

    -2500

    فهنا يجب التأكد من أنه لن يتم تحديد إلا فاتورتين فقط: 2500   /   -2500

    وتبقى الثالثة غير محددة

     

    هل ترغب بهذا الحل؟؟

     

     

  6. عفوا أخي

    أخي الكريم: هذا الحل مبني على التأكد من أن جميع المبالغ المطلوبة من العميل تم تسديدها

     

    المثال الذي ذكرت لا يتحقق فيه هذا الكلام، لاحظ معي وجود فواتير غير مسددة لهذا العميل

    image.png.f340370fbf5e5aea6b31a79e4b66b47b.png

    الحل الثاني ربما يفيد..

    ولكن في حال كان قصدك التشييك على كل فاتورة على حدة وهل تم سدادها أم لا فهذا موضوع آخر

    وهنا ستظهر مشكلة لو تكررت فاتورة لنفس العميل بنفس المبلغ

    ممكن حلها، ولكن ستحتاج معادلات مختلفة

  7. حسب فهمي لطلبك أنك تريد معرفة الرصيد كالتالي:

    عمليات السحب تحسب بنفس اليوم (بدون تعديل)

    أما عمليات الإيداع لا تحسب بالرصيد إلا بعد 3 أيام

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

    ثم نحسب الرصيد 

    بالتوفيقكشف حساب.xlsm

  8. عفوا

    هناك احتمالين لما ذكرت:

     

    الأول: أن المطلوب هو وضع 1 في حال كان العميل سدد جميع الفواتير التي عليه (نحسب مجموع مبالغ الفواتير عليه في كامل الملف)

    والملف المرفق يحل هذه الحالةNew Microsoft Excel Worksheet-Solved.xlsx

    وقد استخدمنا بداية الدالة 

    =SUMIF(A:A;A3;B:B)

    لجمع جميع مبالغ الفواتير لكل عميل

    ثم استخدمنا الدالة

    if

    بحيث في حال كان المجموع 0 فإننا نحصل على الرقم 1

    وفي حال لم يكن 0 فيبقى فراغ

     

    =IF(SUMIF(A:A;A3;B:B)=0;1;"")

    الاحتمال الثاني:

    أن المطلوب هو وضع 1 في حال كان العميل سدد الفواتير السابقة التي عليه (نحسب فقط مبالغ الفواتير السابقة أما الجديدة في الصفوف اللاحقة فلا تدخل بالحساب)

    والملف في الرابط يحل هذه الحالة (للأسف لم استطع ادراج الملف في المنتدى)

    https://drive.google.com/file/d/1MiFxmpmHp5nOmeKWo19FDH4k7fQpcIiE/view?usp=sharing

    وقد استخدمنا بداية الدالة 

    SUMIF($A$2:A3;A3;$B$2:B3)

    لجمع مبالغ الفواتير السابقة لكل عميل

    ثم استخدمنا الدالة

    if

    بحيث في حال كان المجموع 0 فإننا نحصل على الرقم 1

    وفي حال لم يكن 0 فيبقى فراغ

     

    =IF(SUMIF($A$2:A3;A3;$B$2:B3)=0;1;"")

    وبالتوفيق

    • Thanks 1
×
×
  • اضف...

Important Information