أبوزاهر قام بنشر يوليو 19, 2005 قام بنشر يوليو 19, 2005 (معدل) لدي سؤال وأرجو ان تتحملوا جهلي وقلة معرفتي بالاكسل : كيف استطيع إضافة كود او دالة يقوم بفرز الاعمدة في الرسم البياني تنازلياً حسب المنتج الأكثر مبيعاً ثم الذي يليه دون إجراء أي تعديلات على الجدول أو ترتيب الحقول ، في حالة أستبدال أرقام المبيعات يقوم الجدول تلقائياً بتعديل قيم الأعمدة بالرسم البياني ثم يعاد ترتيب الأعمدة وفرزها حسب القيمة الأكبر بحسب القيم الجديدة . وللتوضيح أكثر سيكون ترتيب المنتجات ثابت بدون تعديل بالجدول ، لكن في الرسم سيختلف ترتيب الأعمدة التي تدل على كل منتج بحسب القيم في الجدول فلو تغيرت إجمالي منتج D ليصبح هو أكبر قيمة ( الملف مرفق ) سينتقل ليصبح مكان العمود A بالرسم البياني فقط . أنتظر ردكم كنت أرغب بإرفاق ملف للموضوع لكن لم أعرف الطريقة :) تم تعديل يوليو 19, 2005 بواسطه أبوزاهر
أبوزاهر قام بنشر يوليو 19, 2005 الكاتب قام بنشر يوليو 19, 2005 يوجد ملف يحتوي على مثال للمطلوب ولكنه مرفق مع نفس الموضوع في منتدى آخر تحت الرابط http://www.arabteam2000-forum.com/index.ph...topic=68069&hl=
محمد حجازي قام بنشر يوليو 19, 2005 قام بنشر يوليو 19, 2005 السلام عليكم ... يمكنك حل المشكلة عن طريق إضافة صف إضافي ( الصف 11 المخفي) و الاستعانة بالدالة LARGE . جرب المرفق التالي : ABCD.rar
أبوزاهر قام بنشر يوليو 20, 2005 الكاتب قام بنشر يوليو 20, 2005 أخي الكريم محمد حجازي السلام عليكم أشكرك على استجابتك المشكلة أخي الكريم أن الصف المخفي فيه عيب جوهري وهو ان العنوان أسفل العمود على المحور الأفقي بالرسم لا يتغير وحتى يعطي النتيجة الصحيحة لا بد من تعديل مواقع الأعمدة على الجدول أولاً بترتيب صحيح ليؤثر بدورة على الرسم . مثلاً لو غيرت قيم العمود C ليصبح هو الأكبر فإن الرسم البياني سيتغير فيه العمود A بدلاً من C لأنه يقرأ من الصف المخفي قيمة C الموجودة تحت عمود A . المشكلة الاخرى تتلخص في ان الجدول الحقيقي الذي أعمل عليه هو أعقد بكثير من المثال المرفق للتبسيط ، وأي حل يتطلب إجرء تعديل على الجدول بدلاً من الرسم البياني سيصبح غير عملي نهائياً . تحياتي وأشكر لك تجاوبك
محمد حجازي قام بنشر يوليو 20, 2005 قام بنشر يوليو 20, 2005 السلام عليكم ... جرب الدالة التالية من أجل ترتيب عناوين الفئات (تشبه إلى حد كبير الدالة Large) : Function ARRAYING(MyRange As Range, Rank As Byte, NumberRow As Long) For i = 1 To Rank If Application.WorksheetFunction.Large(MyRange, i) = Application.WorksheetFunction.Large(MyRange, Rank) Then n = n + 1 End If Next i For Each MyCell In MyRange.Cells If MyCell.Value = Application.WorksheetFunction.Large(MyRange, Rank) Then n1 = n1 + 1 If n1 = n Then ARRAYING = Cells(NumberRow, MyCell.Column).Value Exit Function End If End If Next MyCell End Function الدالة السابقة لها ثلاث مدخلات : المدخل الأول : هو مجال الخلايا التي تحتوي على الأرقام التي سنعتمد عليها في عملية الفرز . المدخل الثاني : ترتيب الفئة . المدخل الثالث : رقم السطر المقابل للمجال السابق و الذي سنرجع النتيجة (عنوان الفئة) منه . عند زيادة عدد المنتجات قم فقط بسحب المعادلتين الموجودتين في السطرين 11 و 12 . لمزيد من الإيضاح راجع المرفق . الدالة ARRAYING كنت قد كتبتها سابقاً في الموضوع الموجود على الرابط التالي : http://www.officena.net/ib/index.php?showtopic=5474 ABCD.rar
أبوزاهر قام بنشر يوليو 23, 2005 الكاتب قام بنشر يوليو 23, 2005 (معدل) وعليكم السلام أخي الكريم محمد حجازي جزاك الله ألف خير من يوم الخميس وبعد محاولات كثيرة :) ... أخيراً تمكنت من تعديل الملف حسب المعادلة لا أفضل عمل تعديل على الجدول باضافة صفوف والبحث عن حل من خلال الرسم نفسه ، لكن ما دام هذا هو الحل الوحيد المتاح ساستخدمه إلى حين تحياتي بارك الله فيك تم تعديل يوليو 23, 2005 بواسطه أبوزاهر
الردود الموصى بها