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

عمل ليست من نطاق غير منتظم ومتكرر


إذهب إلى أفضل إجابة Solved by احمدزمان,

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

استاذ/احمد زمان 

كل الشكر والتقدير على مجهوداتك وصبرك على هذا الحل الرائع واعذرنى عن التاخير فى الرد وذلك بسبب ان الملف لم يستطع جهازى فى العمل او فى المنزل ان يعمل معه الكود حيث يقوم بتهنيج الجهاز ولا يستكمل حتى اضطررت ان اجربه عند صديق لى (وفهمت لماذا قلت لى انك لم تستكمل المعادلة للنهاية) وبالفعل الملف اكثر من رائع وان كنت اطمع بطلب صغير فكرت فيه ولا اعرف ان كان مجزى ام لا وهو :ان اقوم بعمل Delete من العمود D حتى العمود H وبذلك يتبقى لى ثلاثة اعمدة فقط وهى عبارة عن (A الكمية ،B المنتج ،C العميل) قبل تطبيق الكود ،هل سيفيد ذلك ام لا عند تطبيق الكود من حيث السرعة ؟؟

تقبل تحياتى

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

استاذ/عطاء الله

اهتمامك ورؤيتك فى الحل بالمعادلات اكثر من رائع ، وقد اعجبنى شخصيا استخدام الدالة ROW فى الحل وقد فكرت ان استخدم الحل بالمعادلات لكن يعيبها ان التقرير سيكون اسبوعيا لكن فكرت ان اثبت شيت مكتوب به المعادلات واترك مساحة للبيانات التى سأقوم بنسخها من تقرير العملاء الى هذا الشيت واريد ان آخذ رأيك فى هذا الحل ؟؟و عندى بعض الاستفسارات :

ما فائدة العمود O حيث من الممكن كتابة المعادلة فى العمود C ؟ (وبكده نقلل من تحميل المعادلات)

اذا اخذنا العميل الرابع "عينات E1660" كعينة مثلا سنجد ان مسحوباته "1" فى حين انه فى الجدول يساوى صفرا (بصراحة انا فضلت ابحث كتير فى المعادلات علشان اعرف الغلط فين ما اقدرتش اوصل لحاجة )

ماذا لو قومنا بعمل Delete من العمود D حتى العمود H وبذلك يتبقى لى ثلاثة اعمدة فقط وهى عبارة عن (A الكمية ،B المنتج ،C العميل)

تحياتى

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

  • أفضل إجابة

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

 

اخي محمد خليل

الكلام الي قلته في آخر مشاركة اوحى الي بفكرة

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

اذا نحنة ممكن نسوي عملية تنظيف للورقة الأصلية فقط

نضيف اسم المنتج امام اسم كل عميل

نحذف بقية الصفوف كلها

نحذف الأعمدة الزائدة

'
Application.Calculation = xlManual
Set FS = Sheets(ActiveSheet.Name)
ER = FS.UsedRange.Rows.Count
    Range("I1") = "ÇáäæÚ"
    Range("J1") = " ÇÓã ÇáÚãíá"
    Range("K2").EntireColumn.Insert
    Range("K2:K" & ER).FormulaR1C1 = "=IF(RC9="""",R[-1]C11,RC9)"
FS.Calculate
For R = 2 To ER
If Cells(R, 10) <> "" Then Cells(R, 9) = Cells(R, 11)
Next R
'    Range("K2").EntireColumn.Delete
    Range("K2:K" & ER).FormulaR1C1 = "=AND(LEN(RC10)>1,LEN(RC9)>1,RC10<>R1C10)"
FS.Calculate
For R = 2 To ER
If Cells(R, 11) <> "" And Cells(R, 11) = False Then
Cells(R, 11).EntireRow.Delete
R = R - 1
End If
Next R
    Range("K2").EntireColumn.Delete
    Range("B1:H2").EntireColumn.Delete
'
With ActiveSheet.UsedRange
    .Font.Size = 11
    .Font.Name = "Arial"
    .ColumnWidth = 99
    .Columns.AutoFit
    .Rows.AutoFit
    .AutoFilter
    End With
ThisWorkbook.Save
Application.Calculation = xlAutomatic

كما في المرفق

 

Copy of Report3.rar

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

لسلام عليكم محمد خليل أنا عكس ما قال له لك صديقي أحمد زمان ( في ملفي وليس ملفه )

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

سؤال الأول : العمودO لا فائدة منه يمكنك لإستغناء عنه ( في البداية كنت أريد إستعمال مصفوفة ثم بدل الطريقة و تركته  )

السؤال  الثاني أنا لم أحسب المسحوبات أن حسبت  المرتجعة

وأخيرا أنا عملت ملف كما طلبت

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

بهذه الطريقة تكون العملية صحيحة 100/100   وهو قابل 5000 واحد

 وأنظر الملف المرفق عند الإشتراك العملاء في منتج واحد في خانة المنتج لكي تفهماه

وأعذرني إن كنت لم اوفق في الشرح

تقبل تحياتي

 

 

 

ata25.rar

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

استاذ / احمد زمان

استاذ / عطاء الله

 

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

 

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

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

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

 

اخي محمد خليل

الكلام الي قلته في آخر مشاركة اوحى الي بفكرة

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

اذا نحنة ممكن نسوي عملية تنظيف للورقة الأصلية فقط

نضيف اسم المنتج امام اسم كل عميل

نحذف بقية الصفوف كلها

نحذف الأعمدة الزائدة

'
Application.Calculation = xlManual
Set FS = Sheets(ActiveSheet.Name)
ER = FS.UsedRange.Rows.Count
    Range("I1") = "ÇáäæÚ"
    Range("J1") = " ÇÓã ÇáÚãíá"
    Range("K2").EntireColumn.Insert
    Range("K2:K" & ER).FormulaR1C1 = "=IF(RC9="""",R[-1]C11,RC9)"
FS.Calculate
For R = 2 To ER
If Cells(R, 10) <> "" Then Cells(R, 9) = Cells(R, 11)
Next R
'    Range("K2").EntireColumn.Delete
    Range("K2:K" & ER).FormulaR1C1 = "=AND(LEN(RC10)>1,LEN(RC9)>1,RC10<>R1C10)"
FS.Calculate
For R = 2 To ER
If Cells(R, 11) <> "" And Cells(R, 11) = False Then
Cells(R, 11).EntireRow.Delete
R = R - 1
End If
Next R
    Range("K2").EntireColumn.Delete
    Range("B1:H2").EntireColumn.Delete
'
With ActiveSheet.UsedRange
    .Font.Size = 11
    .Font.Name = "Arial"
    .ColumnWidth = 99
    .Columns.AutoFit
    .Rows.AutoFit
    .AutoFilter
    End With
ThisWorkbook.Save
Application.Calculation = xlAutomatic

كما في المرفق

 

بارك الله فيك وفى علمك 

هذه نتيجة جيدة جدا ويمكن استخدام الدوال معها بكل سهولة

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

 

لسلام عليكم محمد خليل 

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

 

 

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

لم افهم بالضبط ما الضرر فى تصفية البيانات الى هذا الشكل خصوصا ان البيانات التى تم حذفها وازالتها لم يكن لها اى استخدام 

 

 

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

بهذه الطريقة تكون العملية صحيحة 100/100   وهو قابل 5000 واحد

 

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

حل حضرتك زى ما قولت قبل كده اكثر من رائع لكن عندى استفسار بخصوص الاقتباس السابق ، انا فاهمها بس حاسس انها متعبة لان انا بتعامل مع اكثلر من 600 منتج بالشركة لأكثر من 5000 عميل  فى اكثر من 50000 صف فهل حضرتك بتثبت المعادلة فى هذه الحالة يدوى ام فى طريقة معينة بتعرفك ان العملاء مشتركة فى منتج واحد ؟

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

وعليكم السلام أخي  وصديقي محمد خليل الله يبعد عنك كل مكروه إن شاءلله

عندما طال غيابك قلنا وجد الحل

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

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

لهذ المشكلة يوم عطلة لأني   مشغول كثيرا  

تقبل تحياتي

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

وعليكم السلام أخي  وصديقي محمد خليل الله يبعد عنك كل مكروه إن شاءلله

عندما طال غيابك قلنا وجد الحل

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

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

لهذ المشكلة يوم عطلة لأني   مشغول كثيرا  

تقبل تحياتي

 

اللهم آمين

لقد قمت باستخدام الكود فى التصفية ثم استخدمت معادلات الـ SUMIFS اللى حضرتك استخدمتها .

تحياتى لك وللأستاذ احمد زمان لمساهمتكما فى الحل 

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

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

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