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

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

قام بنشر

تفضل يمكنك استخدام هذه الدالة المعرفة 

=RandomNumbers(1,60,0)
Public Function RandomNumbers(Num1 As Long, Num2 As Long, Optional Decimals As Integer)
Application.Volatile
Randomize
If IsMissing(Decimals) Or Decimals = 0 Then
    RandomNumbers = Int((Num2 + 1 - Num1) * Rnd + Num1)
Else
    RandomNumbers = Round((Num2 - Num1) * Rnd + Num1, Decimals)
End If
End Function

عدم التكرار.xlsm

  • Like 5
  • Thanks 1
  • أفضل إجابة
قام بنشر
Sub Test()
    GenerateUniqueRandom ActiveSheet, "D3:F22", 1, 60
End Sub

Sub GenerateUniqueRandom(ByVal shTarget As Worksheet, ByVal sRng As String, ByVal iStart As Long, iEnd As Long)
    Dim w, v, rng As Range, c As Range, n As Long, i As Long, ii As Long, r As Long
    Set rng = shTarget.Range(sRng)
    If iEnd - iStart + 1 > rng.Cells.Count Then MsgBox "Generated Numbers Greater Than Range Cell Count", vbExclamation: Exit Sub
    w = Evaluate("ROW(" & iStart & ":" & iEnd & ")")
    n = 0
    ReDim v(1 To rng.Rows.Count, 1 To rng.Columns.Count)
    For i = LBound(v, 1) To UBound(v, 1)
        For ii = LBound(v, 2) To UBound(v, 2)
            r = Application.RandBetween(iStart, UBound(w) - n)
            v(i, ii) = w(r, 1)
            w(r, 1) = w(UBound(w) - n, 1)
            n = n + 1
        Next ii
    Next i
    rng.Cells(1).Resize(UBound(v, 1), UBound(v, 2)).Value = v
End Sub

 

  • Like 5
  • Thanks 1
قام بنشر

شكرا استاذي  Ali Mohamed Ali على سرعة الرد وجزاك الله كل خير

بالنسبة للمعادلة التي طرحتها فهي جميلة ورائعة ولكن هناك تكرار في الارقام في المجال (d3:f22) يعني الرقم يعاد اكثر من مرة .

اما بالنسبة للمعادلة التي طرحها الاستاذ lionheart جملية وكافية ولكن لا استطيع التحكم في القيمة العشوائية زيادة او نقصان فهي تعمل على مجال محدد من 1 الى 60 فقط

مختصر القول هل بالامكان اصافة خانة احدد فيها الرقم العشوائي من 1 الى اي رقم ارغب فيه

.. اما بالنسبة لتاخر ردي سابقا فهذا راجع لضروفي الخاصة فمعذرة استاذي... 

قام بنشر

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

ولهذا فانا ارغب بتغيير الرقم 60 بالزيادة او النقصان حسب الحاجة ويا ريت تكون خانة داخل الشيت تحدد فيها البداية والنهاية للارقام العشوائية حسب حاجتي لذلك زايدة اونقصان وشكرا استاذي

10.PNG

قام بنشر

I am so sorry as I don't attach any files at all

Wait for someone who can do that for you

    GenerateUniqueRandom ActiveSheet, "D3:F22", Range("A1").Value, Range("A2").Value

 

  • Like 1
قام بنشر

شكرا استاذي على مجهودك الطيب و وقتك الثمين ومعذرة ان اثقلت عليك...

انا في انتظار المساعدة من جميع الاساتذة في هذا المنتدى

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

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

Important Information