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

طلب مجاميع بشرط واحد


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

مجاميع.rar

      10 المجموع       او علي الشكل التالي   مع مراعاة عدم تكرار جمع نفس الرقم
A 1                        
B 2           مج1 1 2 3 4    
C 3           مج2 2 3 5      
D 4                        
E 5           مج4 5 4 1      
F 6           مج5 6 4        
                           
المطلوب                          
  مجموعة بدائل الارقام التى مجموعها يساوى 10 اي الخليه d1                
                           
  واظهار هذه الارقام كما هى على شكل تلوينها مثلا بلون واحد كما هو موضح              
                           
    مع مراعاة عدم تكرار جمع نفس الرقم                  
                           
تم تعديل بواسطه عمرو حسنى
رابط هذا التعليق
شارك

أخي الكريم عمرو حسني

كيف سيتم تلوين كل مجموعة خلايا بلون واحد وهناك تداخل في النتائج المتوقعة بشكل كبير ..؟؟

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

يمكن الاعتماد على الجزء الآخر الذي أشرت إليه مج1 ومج2 وهكذا ...

 

ملحوظة : النتيجة 3    5    2    أليست هي نفس النتيجة  للاحتمال 2   3  5   (أعتقد أنه لا داعي للتكرار طالما أن نفس الأرقام تؤدي نفس النتيجة)

في انتظار الرد على الملاحظات التي أشرت إليها

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

حضرتك عندك حق وشكرا على الرد 

فعلا المطلوب عدم تكرار المجموعة اذا اعطت نفس النتائج 

لكنى عاجز عن الحل بالفعل 

واذا كان التلوين معضليه مفيش مشكله انا عاوزها مجموعامنفصلة غير مكررة كما تفضلت

ت 

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

أخي الكريم عمرو حسني

إليك الكود التالي

Private iGblGoldenTotal As Long
Private iGblOutputRow As Long
Private iGblMatchingTotalCount As Long
Private Const nOutputHeaderROW = 2

Sub FindCombinationsAddingToGoldenTotal()
    Dim vElements As Variant
    Dim vresult As Variant
    Dim I As Long, T As Long
    Dim iLastIndex As Integer
    Dim sValue As String
    
    Sheets("Sheet1").Range("H3:Z" & Rows.Count).ClearContents
    
    iLastIndex = 0
    ReDim vElements(1 To 1)
    iGblGoldenTotal = Range("D1").Value
    
    For T = 2 To Cells(Rows.Count, "B").End(xlUp).Row
        sValue = Range("B" & T).Value
        If IsNumeric(sValue) Then
            iLastIndex = iLastIndex + 1
            ReDim Preserve vElements(iLastIndex)
            vElements(iLastIndex) = sValue
        End If
    Next T
    
    iGblOutputRow = nOutputHeaderROW
    iGblMatchingTotalCount = 0
    
    For I = 1 To UBound(vElements)
        ReDim vresult(1 To I)
        Call CombinationsNP(vElements, I, vresult, 1, 1)
    Next I
End Sub

Sub CombinationsNP(ByVal vElements As Variant, ByVal P As Long, ByRef vresult As Variant, ByVal iElement As Integer, ByVal iIndex As Integer)
    Dim I As Long
    Dim II As Long
    Dim iSum As Long
    
    For I = iElement To UBound(vElements)
        vresult(iIndex) = vElements(I)
        If iIndex = P Then
            iSum = 0
            For II = LBound(vresult) To UBound(vresult)
                iSum = iSum + vresult(II)
            Next II
            
            If iSum = iGblGoldenTotal Then
                iGblOutputRow = iGblOutputRow + 1
                
                iGblMatchingTotalCount = iGblMatchingTotalCount + 1
                Range("H" & iGblOutputRow).Value = "مج " & iGblMatchingTotalCount
                Range("I" & iGblOutputRow).Resize(, P) = vresult
            End If
        Else
            Call CombinationsNP(vElements, P, vresult, I + 1, iIndex + 1)
        End If
    Next I
End Sub

مرفق الملف فيه تطبيق الكود ..

تقبل تحياتي

Totals For All Combinations.rar

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

الشكر كل الشكر للاخ الفاضل 

ياسر خليل أبو البراء

فعلا عمل مميز ونجحت الطريقة بالفعل فهل من تعديل كى يتمكن الكود فى ان يكون اسرع من ذلك لانى ادخلت مجموعة الارقام وقمت بتعديل range النتائج 

فتقل الملف ولم تفلح المحاولة 

وبالنهاية لكم منى جزيل الشكر

Totals For All Combinations (Autosaved).rar

Totals For All Combinations (Autosaved).rar

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

أخي الكريم عمرو

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

عموماً ننتظر مساهمات الأخوة الأعضاء فلربما يكون هناك حل أفضل للتعامل مع هذا الكم من الأرقام

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

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