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

فرز الاعمدة تنازلياً او تصاعدياً بالرسم البياني


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

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

كيف استطيع إضافة كود او دالة يقوم بفرز الاعمدة في الرسم البياني تنازلياً حسب المنتج الأكثر مبيعاً ثم الذي يليه دون إجراء أي تعديلات على الجدول أو ترتيب الحقول ، في حالة أستبدال أرقام المبيعات يقوم الجدول تلقائياً بتعديل قيم الأعمدة بالرسم البياني ثم يعاد ترتيب الأعمدة وفرزها حسب القيمة الأكبر بحسب القيم الجديدة .

وللتوضيح أكثر سيكون ترتيب المنتجات ثابت بدون تعديل بالجدول ، لكن في الرسم سيختلف ترتيب الأعمدة التي تدل على كل منتج بحسب القيم في الجدول فلو تغيرت إجمالي منتج D ليصبح هو أكبر قيمة ( الملف مرفق ) سينتقل ليصبح مكان العمود A بالرسم البياني فقط .

أنتظر ردكم

كنت أرغب بإرفاق ملف للموضوع لكن لم أعرف الطريقة :)

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

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

يمكنك حل المشكلة عن طريق إضافة صف إضافي ( الصف 11 المخفي) و الاستعانة بالدالة LARGE .

جرب المرفق التالي :

ABCD.rar

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

أخي الكريم محمد حجازي

السلام عليكم

أشكرك على استجابتك

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

مثلاً لو غيرت قيم العمود C ليصبح هو الأكبر فإن الرسم البياني سيتغير فيه العمود A بدلاً من C لأنه يقرأ من الصف المخفي قيمة C الموجودة تحت عمود A .

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

تحياتي وأشكر لك تجاوبك

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

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

جرب الدالة التالية من أجل ترتيب عناوين الفئات (تشبه إلى حد كبير الدالة 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

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

وعليكم السلام

أخي الكريم محمد حجازي

جزاك الله ألف خير

من يوم الخميس وبعد محاولات كثيرة :) ... أخيراً تمكنت من تعديل الملف حسب المعادلة

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

تحياتي

بارك الله فيك

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

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information