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

مساعدة : اريد حذف اي رقم يتك تكرار


إذهب إلى أفضل إجابة Solved by ياسر خليل أبو البراء,

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

جرب هذا الماكرو

الملف مرفق

Option Explicit

Sub Tirage_Aleatoire_N_Valeurs_Dans_Liste()
   Dim SL, ar, i, NB, Lr, k
   With Application
   .ScreenUpdating = False
   .Calculation = xlCalculationManual
   End With
  NB = 15 ' '   العدد المطلوب ناقص 1
 Lr = 34
For k = 1 To 11 Step 2
    ar = Range("A2:a" & Lr)
   If Not IsNumeric(NB) Or NB > Lr Or NB < 0 Then NB = Lr - 1
          Set SL = CreateObject("System.Collections.SortedList")
   Randomize
   For i = 1 To NB
      If Not SL.containsvalue(ar(i, 1)) Then SL.Add Rnd, ar(i, 1)
   Next i
        With ActiveSheet
         For i = 0 To Application.Min(SL.Count - 1, NB) - 1
            .Cells(i + 39, k).Value = SL.GetByIndex(i)
         Next
   End With
  Next
    With Application
   .ScreenUpdating = True
   .Calculation = xlCalculationAutomatic
   End With
End Sub

 

المصنف1 Salim.rar

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

بارك الله فيك أخي الغالي سليم وجزيت خيراً على هذا الكود المميز والرائع

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

Sub RandomListsSALIM()
    Dim SL      As Object
    Dim ar      As Variant
    Dim Lr      As Long
    Dim k       As Long
    Dim i       As Long
    Dim nb      As Long

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
        nb = 16  'Required Plus One +1
        Lr = 34
        
        For k = 1 To 11 Step 2
            ar = Range("A1:A" & Lr)
            If Not IsNumeric(nb) Or nb > Lr Or nb < 0 Then nb = Lr - 1
            Set SL = CreateObject("System.Collections.SortedList")
            Randomize
            
            For i = 1 To nb
                If Not SL.containsvalue(ar(i, 1)) And Cells(38, k) <> ar(i, 1) Then SL.Add Rnd, ar(i, 1)
            Next i
    
            For i = 0 To nb - 3
                Cells(i + 39, k).Value = SL.GetByIndex(i)
            Next i
        Next k
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

 

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

6 ساعات مضت, ياسر خليل أبو البراء said:

بارك الله فيك أخي الغالي سليم وجزيت خيراً على هذا الكود المميز والرائع

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


Sub RandomListsSALIM()
    Dim SL      As Object
    Dim ar      As Variant
    Dim Lr      As Long
    Dim k       As Long
    Dim i       As Long
    Dim nb      As Long

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
        nb = 16  'Required Plus One +1
        Lr = 34
        
        For k = 1 To 11 Step 2
            ar = Range("A1:A" & Lr)
            If Not IsNumeric(nb) Or nb > Lr Or nb < 0 Then nb = Lr - 1
            Set SL = CreateObject("System.Collections.SortedList")
            Randomize
            
            For i = 1 To nb
                If Not SL.containsvalue(ar(i, 1)) And Cells(38, k) <> ar(i, 1) Then SL.Add Rnd, ar(i, 1)
            Next i
    
            For i = 0 To nb - 3
                Cells(i + 39, k).Value = SL.GetByIndex(i)
            Next i
        Next k
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

 

باركالله بك اخي ياسر 

و انا بدوري اقترح هذا الكود ربما يكون اسرع قليلاً

Option Explicit
Option Base 1
Sub Rand()

    Dim r, c, i, k As Integer
    For k = 1 To 11 Step 2
     Dim g(34)
    Do
      c = Application.RandBetween(1, 34)
        If Not g(c) Then
            r = r + 1
            Cells(i + 39, k) = c: Cells(i + 39, k + 1) = Range("b" & c)
            i = i + 1
            g(c) = True
        End If
    Loop Until r = 14
    r = 0: i = 0
    Erase g
    Next
End Sub

 

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

يوجد تكرار

 

الفكرة العامة للملف حتي توضح الصورة

 

انا اريد اختار رئيس لكل مجموعة من ضمن المجموعة ويتم التوزيع عشوائي

للبقية على المجموعات تزيد المجموعات وتنقص بشرط عدم تكرار الأشخاص

وجميع الاكواد هذا تكرر الافراد في كل مجموعة

1212.rar

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

ما هو عدد أفراد كل مجموعة وكيف ستتم عملية التوزيع ؟ أقصد كيف يتم تحديد عدد أفراد كل مجموعة .. وما هو مقصدك بقولك : كل مجموعة تزيد أو تنقص ..؟ هل معنى ذلك أن عدد كل مجموعة غير ثابت ...؟

أعتقد الموضوع يحتاج لمزيد من التفاصيل مع إرفاق نموذج مصغر به بعض النتائج المتوقعة .. لتشرح على أساسها

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

العدد الإجمالي 34 في المثال المرفق ولديك 4 مجموعات كل مجموعة مكونة من 5  .. إذاً العدد سيكون 4 * 5 = 20 ، فما مصير الباقي من العدد الإجمالي 34-20 = 14

المفترض أن تكون الأسماء مختلفة ولا يوجد تشابه .. لاحظ وجود الاسم أحمد في الخلية B2 و B35 أم أن المثال فقط للتوضيح أم هل سيكون هناك تشابه في الاسماء؟

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

الأسماء لا توجد تشابه بها نهائياً

 

بالنسبة للاعداد في يتم توزيعها على المجموعات كاملة بدون نقص 

 

الاسماء مثال فقط لان ممكن العدد يصبح اكثر من 60 أو 80 

 

رحم الله وأمك وأبوك 

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

  • أفضل إجابة

أعتذر عن كثرة الأسئلة أحاول الإمساك بكافة الخيوط لأن الموضوع معقد ومتشعب

هل عدد المجموعات ثابت أم أنه متغير ..؟

وبالنسبة لعدد الأسر هل سيتم التوزيع بالتساوي على المجموعات .. لأن 34 / 4 مجموعات سينتج عنه عدد غير صحيح .. معنى ذلك أن هناك مجموعات قد تكون أكبر في العدد من مجموعات أخرى (أحاول التفكير بصوت مرتفع ليشاركنا الأخوة الكرام في الموضوع)

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

اقتباس

هل عدد المجموعات ثابت أم أنه متغير ..؟

لا عدد المجموعات متغير يزيد وينقص يحسب

 

هل رؤساء المجموعات من الاسر ؟

 

نعم يتم اختيار رؤساء المجموعات من الاسر اختيار يدوي وليس عشوائي .

هل العدد الإجمالي للأسر تحت الرئيس متساوية ؟

لا بس تكون متكافئة يعني تقريب الاعداد

 

 

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

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