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

تحديد قيمة خصم المنتج بناء على عدد الايام التي تم بيعه فيها


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

الاخوة الاعزاء في منتدى اوفيسنا .. السلام عليكم ورحمة الله وبركاته

يسعدني ويشرفني في البداية الانضمام الى صرحكم العملاق حيث انني متابعة ومتواجدة معكم مند مدة لا بأس بها وقد استفدت كثيرا من الدروس والمواضيع التي يتم طرحها في ه\ا المنتدى العملاق مما شجعني على طلب مساعدتكم لعمل شيت يلخص البيانات المدخلة في شيت آخر بدون تكرار حسب الالية التالية:

 

 

اولا: نقوم بعمل تخفيض لمجموعة من الاصناف حسب الخطة التي تتضمن عدد الايام التي ينزل فيها كل صنف بشرط ان تكون ايام متتابعة في نفس الشهر

مثال:

ادا تم نزول الصنف في يوم منفرد من الشهر يحصل على نسبة خصم   75% من القيمة

وادا تم نزول الصنف لمدة تتراوح من 2 الى 4 ايام يحصل على نسبة خصم 40%

وادا تم نزول الصنف لمدة تتراوح من 5 الى 9 ايام يحصل على نسبة خصم  الى 20%

 

اليكم المرفق راجية من الله جل وعلا ان يجعلها في موازين حسناتكم

 

 

اختكم

 

 

بيسان اسماعيل

الاصناف ونسبة الخصم.zip

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

السلام عليكم

أولا أهلا ومرحبا بك الأخت الكريمة بين إخوانك وأخواتك

ثانيا السؤال غير واضح

مثلا ، الصنف 101 موجود بالجدول بالتواريخ : 01/06/2014 ، 02/06/2014 ،  08/06/2014 ، 09/06/2014 ، 12/06/2014

وأنت كتبتي "نسبة الخصم ستكون 75% لان المنتج نزل ليوم واحد فقط"
هل هذا خطأ أم أنني لم أفهم المطلوب
رابط هذا التعليق
شارك

الاصناف ونسبة الخصم (2).zipالاخ الفاضل والاستاد القدير طارق محمود

 

شكرا جزيلا لاهتمامك  ومساعدتك واعتدر كثيرا عن عدم ايصال الفكرة او المطلوب بالطريقة الصحيحة لهدا قمت بمحاولة للتوضيح اكثر من خلال المرفق

اسأل الله ان اكون قد وفقت في ايضاح المطلوب هده المرة ...

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

 

اختكم

 

بيسان اسماعيل

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

السلام عليكم

تفضلي أختي الحل بالأكواد

معذرة لإنشغالي في الفترة السابقة

يمكنك الحصول علي التقرير بالضغط علي أي من الزرين بالورقتين

الكود المستخدم

Sub countt()
    LR = [B9999].End(xlUp).Row
    Sheets("Report").[A2:D99].ClearContents
        For r = 2 To LR
            nr = Sheets("Report").[B99].End(xlUp).Row + 1
            If Cells(r, 2) = Cells(r - 1, 2) Then GoTo 10
                cc = 1
                For i = 1 To 9
                    If Cells(r, 2) <> Cells(r + i, 2) Then GoTo 5
                        cc = cc + 1
               Next i
5       If cc = 1 Then kh = 0.75: txt = "يوم واحد": GoTo 8
            txt = cc & " ايام متتالية"
            If cc < 5 Then kh = 0.4 Else kh = 0.2
8       Range("B" & r & ":C" & r).Copy Sheets("Report").Cells(nr, 1)
         Sheets("Report").Cells(nr, 3) = txt
         Sheets("Report").Cells(nr, 4) = kh
10    Next r
Sheets("Report").Activate
End Sub

شرح سريع للكود

يمر في جميع صفوف الورقة الأولي

ويقارن الخلية التي بها رقم الصنف بالتي تعلوها ، إن كانت تساويها يعني الصنف متكرر فلن يفعل شيئا ويتجاوزها للتي تليها Next r

فإذا لم تكن تساويها يعطي التكرار رقم 1 ثم يبدأ في عدد التكرارات cc للأسطر التسعة التالية

وبناءا علي عدد التكرارات يغير الجملة txt التي ستوضع في سطر التقرير وكذلك نسبة الخصم kh

والباقي سهل إن شاء الله

الاصناف ونسبة الخصم2.rar

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

الاستاذ القدير والأخ الفاضل ...طارق محمود

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

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

اختكم

بيسان اسماعيل

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

الاستاذ الكبير الباشمهندس طارق

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

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

الاستاذ الفاضل ...طارق محمود.. فتح الله عليكم وبارك لكم وزادكم من فضله..

الشرح كان وافي وكافي لعمل جميع التعديلات التي رغبتها ..ماعدا الاحتفاظ بتنسيقات صفحة التقرير عند نقل البيانات وان يكون الصف الثامن هو بداية التقرير في الملف

في حال امكانية ذلك ارجو منكم تعديل الكود بما يناسب

شاكرة ومقدرة جميلكم معي

بيسان اسماعيل

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

السلام عليكم
أخي العزيز / عادل ابوزيد
شاكر لك كلماتك الطيبة ومرورك العطر
جزاك الله خيرا

 

أختي الفاضلة / بيسان
أولا: للاحتفاظ بتنسيقات صفحة التقرير عند نقل البيانات

يمكن ذلك بأكثر من طريقة

1- أن نجعل صفا في آخر أو في أول التقرير ننسخ منه التنسيقات لكامل الجدول

2- أن نجعل نسخ البيانات ولصقها في صفحة التقرير بصيغة قيم فقط Paste value

أفضل الحل الأول وسأضيف في آخر الكود أمرا ينقل تنسيقات السطر 99 مثلا للأعلي هذا الأمر تجدينه في آخر ثلاثة أسطر بالكود

 [A99:D99].Copy
    [A9:D99].PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False

 

ثانيا: ليكون السطر الثمن بداية التقرير

أي أن السطر التاسع بداية بيانات التقرير

فلاتعديل يلزم إلا ثاني سطر في الكود والذي مسح البيانات القديمة قبل نقل الجديد

يتغير من

 Sheets("Report").[A2:D99].ClearContents

إلي

Sheets("Report").[A9:D99].ClearContents

 

 

مرفق الملف وبه التعديلان

الاصناف ونسبة الخصم4.rar

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

السلام عليكم..

 

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

فقد واجهت مشكلة عدم حساب  أيام نزول المنتج بشكل صحيح عند مراجعتها نظرا لاضافة اعداد كبيرة من الاصناف تتوزع حسب ايام الشهر ...

 

ارجو الافادة حول امكانية تعديل الكود ليستوعب اعداد كبيرة من الاصناف قد تصل الى 1000 صنف.

 

مرفق لكم الملف

 

بيسان اسماعيل

الاصناف ونسبة الخصم عناصر باعداد كبيرة4.zip

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

السلام عليكم

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

Sub countt()
    LR = [B9999].End(xlUp).Row
    Sheets("Report").[A9:D9999].ClearContents
        For r = 2 To LR 
....
....
....

أول سطر

LR = [B9999].End(xlUp).Row

هذه تجعل الكود يأخذ بيانات حتي السطر 9999 (حوالي 10 آلاف بيان) وتسطيعين تغييرها بلا مشاكل

 

ثاني سطر

Sheets("Report").[A9:D9999].ClearContents

هذا يمسح بيانات التقرير قبل بدأ نقل الجديد إليها

أيضا بالتعديل يمسح حتي السطر 9999

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

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