الصادق ـ ح قام بنشر أبريل 2, 2022 قام بنشر أبريل 2, 2022 كيفية توليد ارقام عشوائية بدون تكرار علما انني استعملت معادلة RANDBETWEEN(1;60) ولم تحقق شرط عدم التكرار عدم التكرار.xlsx
Ali Mohamed Ali قام بنشر أبريل 2, 2022 قام بنشر أبريل 2, 2022 تفضل يمكنك استخدام هذه الدالة المعرفة =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 5 1
أفضل إجابة lionheart قام بنشر أبريل 2, 2022 أفضل إجابة قام بنشر أبريل 2, 2022 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 5 1
الصادق ـ ح قام بنشر أبريل 7, 2022 الكاتب قام بنشر أبريل 7, 2022 شكرا استاذي Ali Mohamed Ali على سرعة الرد وجزاك الله كل خير بالنسبة للمعادلة التي طرحتها فهي جميلة ورائعة ولكن هناك تكرار في الارقام في المجال (d3:f22) يعني الرقم يعاد اكثر من مرة . اما بالنسبة للمعادلة التي طرحها الاستاذ lionheart جملية وكافية ولكن لا استطيع التحكم في القيمة العشوائية زيادة او نقصان فهي تعمل على مجال محدد من 1 الى 60 فقط مختصر القول هل بالامكان اصافة خانة احدد فيها الرقم العشوائي من 1 الى اي رقم ارغب فيه .. اما بالنسبة لتاخر ردي سابقا فهذا راجع لضروفي الخاصة فمعذرة استاذي...
الصادق ـ ح قام بنشر أبريل 8, 2022 الكاتب قام بنشر أبريل 8, 2022 السلام عليكم ... حسب التنبيهات انك قمت بالرد والتغيير في المعادلة وانك ادرجت حلا ولكني لم الاحظ ذلك ... ولهذا فانا ارغب بتغيير الرقم 60 بالزيادة او النقصان حسب الحاجة ويا ريت تكون خانة داخل الشيت تحدد فيها البداية والنهاية للارقام العشوائية حسب حاجتي لذلك زايدة اونقصان وشكرا استاذي
lionheart قام بنشر أبريل 8, 2022 قام بنشر أبريل 8, 2022 Replace the number with the cell value. What's difficult at this point replace the number 1 with range("A1").value for example 2
الصادق ـ ح قام بنشر أبريل 8, 2022 الكاتب قام بنشر أبريل 8, 2022 شكرا استاذي على الرد وياريت تعملي تطبيق على الملف المرفق بارك الله فيك لاني لم افهم قصدك جيدا وكيفية استبدل الرقم 1 بقيمة الخلية ("A1") عدم التكرار.xlsm
lionheart قام بنشر أبريل 8, 2022 قام بنشر أبريل 8, 2022 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 1
الصادق ـ ح قام بنشر أبريل 8, 2022 الكاتب قام بنشر أبريل 8, 2022 شكرا استاذي على مجهودك الطيب و وقتك الثمين ومعذرة ان اثقلت عليك... انا في انتظار المساعدة من جميع الاساتذة في هذا المنتدى
الردود الموصى بها