Mina EL-Prince قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 اعضاء منتدي اوفيسنا الكرام تحية طيبة وبعد اعمل على فكرة تسمي في عملي التوزيع ومعناها عدد العملاء المتعاملين في صنف معين فلو افترضنا على سبيل المثال انة لدي شيت اكسيل فارغ يوجد اسماء العملاء فية فى قاعدة بيانات العملاء (شيت 1 ) رقم واحد تحت العمود A النطاق A1:A2499 ومتسلسل حتي 2500 عميل وانة يوجد لدي في فواتير العملاء (شيت 2 ) صفحة رقم 2 فواتير جميع العملاء من بداية الشهر وحتي اخرة حيث ان اسم العميل تحت العمود B النطاق B1:B2499 تبدا الاعمدة متسلسلة في صفحة قاعدة بيانات العملاء (شيت 1 ) بداية من عمود B وحتي العمود CW عدد 100عمود ( الهدف) المصفوفة B1:CW2499 تبدا الاعمدة متسلسلة في صفحة فواتير جميع العملاء ( شيت 2 ) بداية من عمود C وحتي العمود CX عدد 100 عمود ( البيانات التي يتم معالجتها) المصفوفة C1:CX2499 المطلوب اذا كان لدينا عدد 100 صنف متسلسلين من 1 وحتي 100 ونريد معرفة اذا كان العميل متعامل وليكن على سبيل المثال هل العميل متعامل في الصنف رقم 1 من خلال الفواتير الموجودة في صفحة فواتير جميع العملاء ام لا ارجو التكرم بمساعدتي حيث اني حاولت كثيرا واخر ماتوصلت الية مجرد فكرة عن عمل تكرارات ومتغيرات ولكني تهت ولم استطيع ان اصل إلي شيء برجاء الاقتراح علي ماذا افعل محلوظة : كتبت معادلة بالاكسل لتوضيح ماذا اريد ان افعل ولكن ما اريد فعل اريد فعلة بالفيجوال بيسك شكرا جزيلا ______ _______.rar 1
احمد عبد الناصر قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 السلام عليكم جرب و ضع هذه المعادلة في الخلية C2 ثم انسخها في باقي الخلايا . =SUMIF(INDIRECT("CustmerInvoice!c2";FALSE);CustmerDataBase!$A2;INDIRECT("CustmerInvoice!c"&3+COLUMN(A1);FALSE)) تحياتي
احمد عبد الناصر قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 و ان اردته كود جرب هذه Sub Dahmour() Application.ScreenUpdating = False Range("c2:cx2501").FormulaR1C1 = "=SUMIF(INDIRECT(""CustmerInvoice!c2"",FALSE),CustmerDataBase!RC1,INDIRECT(""CustmerInvoice!c""&3+COLUMN(R[-1]C[-2]),FALSE))" Range("c2:cx2501") = Range("c2:cx2501").Value Application.ScreenUpdating = True End Sub تحياتي
Mina EL-Prince قام بنشر مايو 31, 2013 الكاتب قام بنشر مايو 31, 2013 شكرا استاذ احمد عبد الناصر على الاهتمام لقد قمت بتجربة دالة الاكسل اولا ولم اصل إلي النتيجة لانة عند عمل فواتير في صفحة الفواتير لم يظهر اي من العملاء تعامل في اي من الاصناف بالنسبة لكود الفيجوال بيسك هل يحتاج إلي تكرار ام هو كفيل بعمل تكرار لنفسة شكرا لتعبك وارجو الايضاح
احمد عبد الناصر قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 لقد قمت بتجربة دالة الاكسل اولا ولم اصل إلي النتيجة لانة عند عمل فواتير في صفحة الفواتير لم يظهر اي من العملاء تعامل في اي من الاصناف جرب الملف المرفق فيه بعض البيانات الوهمية ,فهل هذه هي النتيجة التي تريد ؟ بالنسبة لكود الفيجوال بيسك هل يحتاج إلي تكرار ام هو كفيل بعمل تكرار لنفسة يقوم بكامل العمل و حده و لا يحتاج الي اي شيء , لكنه في الاساس يعتمد نفس طريقة المعادلة فان لم تكن المعادلة تؤدي الغرض فلن يفعل الكود . تحياتي الفكرة باختصار+.rar
Mina EL-Prince قام بنشر مايو 31, 2013 الكاتب قام بنشر مايو 31, 2013 لقد قمت بتجربة دالة الاكسل اولا ولم اصل إلي النتيجة لانة عند عمل فواتير في صفحة الفواتير لم يظهر اي من العملاء تعامل في اي من الاصناف جرب الملف المرفق فيه بعض البيانات الوهمية ,فهل هذه هي النتيجة التي تريد ؟ بالنسبة لكود الفيجوال بيسك هل يحتاج إلي تكرار ام هو كفيل بعمل تكرار لنفسة يقوم بكامل العمل و حده و لا يحتاج الي اي شيء , لكنه في الاساس يعتمد نفس طريقة المعادلة فان لم تكن المعادلة تؤدي الغرض فلن يفعل الكود . تحياتي اشكرك استاذ احمد عبد الناصر الفكرة كدة مظبوطة فيما عدا شىء واحد هو انة يجب ان تعود إما 1 او بصفر 1= متعامل في هذا الصنف من خلال الفواتير 0= لم يتعامل في هذا الصنف من خلال الفواتير بمعني اخر بدلا من ان تعود في الخلية C2 في الصفحة CUSTMERDATABASE بقيمة 18 تعود بقيمة 1 وإذا لم يكن تعامل في هذا الصنف تعود بقيمة 0 او خلية فارغة
احمد عبد الناصر قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 السلام عليكم جرب هذه Sub Dahmour() Application.ScreenUpdating = False Range("c2:cx2501").FormulaR1C1 = "=IF(sumif(CustmerInvoice!R2C2:R1048576C2,CustmerDataBase!RC1,CustmerInvoice!R2C[1]:R1048576C[1])>0,1,0)" Range("c2:cx2501") = Range("c2:cx2501").Value Application.ScreenUpdating = True End Sub تحياتي
Mina EL-Prince قام بنشر مايو 31, 2013 الكاتب قام بنشر مايو 31, 2013 السلام عليكم جرب هذه Sub Dahmour() Application.ScreenUpdating = False Range("c2:cx2501").FormulaR1C1 = "=IF(sumif(CustmerInvoice!R2C2:R1048576C2,CustmerDataBase!RC1,CustmerInvoice!R2C[1]:R1048576C[1])>0,1,0)" Range("c2:cx2501") = Range("c2:cx2501").Value Application.ScreenUpdating = True End Sub تحياتي ممتاز استاذ / احمد عبد الناصر هذا هو المطلوب هل تتكرم بشرح هذة الخطوات السحرية من صاحب الانامل السحرية اشكرك كثيرا لسرعة استجابتك واهتمامك
احمد عبد الناصر قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 هذا هو المطلوب حمدا لله بالنسبة للشرح اول و اخر سطر لتسريع عمل الكود Application.ScreenUpdating = False Application.ScreenUpdating = True هذا السطر يقوم بوضع المعادلة في المدي c2:cx2501 Range("c2:cx2501").FormulaR1C1 = "=IF(sumif(CustmerInvoice!R2C2:R1048576C2,CustmerDataBase!RC1,CustmerInvoice!R2C[1]:R1048576C[1])>0,1,0)" و اخيرا هذا السطر يحول الخلايا الي قيم بدل من المعادلات ليصبح الشيت اسرع و اقل في الحجم Range("c2:cx2501") = Range("c2:cx2501").Value تحياتي 1
عادل ابوزيد قام بنشر مايو 31, 2013 قام بنشر مايو 31, 2013 الاستاذ احمد عبد الناصر دائماً احب ان اطلع على اعمالك فهى مبهرة جعله الله فى ميزان حسناتك وزادك علماً وبركه وعافية
احمد عبد الناصر قام بنشر يونيو 1, 2013 قام بنشر يونيو 1, 2013 الاستاذ احمد عبد الناصر دائماً احب ان اطلع على اعمالك فهى مبهرة جعله الله فى ميزان حسناتك وزادك علماً وبركه وعافية شكرا على مرورك الكريم ,جعله الله فى ميزان حسناتك وزادك علماً وبركه وعافية رائع استاذ احمد تسلم ايدك شكرا علي مرورك الكريم , تقبل تحياتي
saad abed قام بنشر يونيو 1, 2013 قام بنشر يونيو 1, 2013 استاذ احمد عبدالناصر انت صاحب مدرسة تبسيط الاكواد والله افكار ممتازة جزاك الله خبرا
احمد عبد الناصر قام بنشر يونيو 1, 2013 قام بنشر يونيو 1, 2013 اسعدني مرورك الكريم استاذ سعد , تقبل تحياتي
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.