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

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

قام بنشر (معدل)

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

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

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

أنتظر ردكم

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

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

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

السلام عليكم

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

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

مثلاً لو غيرت قيم العمود 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