non duplicate random number generator أرقام عشوائية غير مكررة

السلام عليكم و رحمة الله 

 



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

الموضوع الثاني تحدثنا فيه عن كلمات السر بإستخدام المعادلة أعلاه من هنا


و لكن السؤال الذي وصلني : 

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

في الخلية A1 


أكتب معادلة Randbetween بين رقمين على سبيل المثال بين 100 و 150 



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


 

=LARGE(IF(COUNTIF($A$1:A1,ROW(INDIRECT("100:150")))=1,"",ROW(INDIRECT("100:150"))),1+TRUNC(RAND()*(50-ROW()+2))) 

 

 

و هذه المعادلة معادلة صفيف ( يجب عند إدخالها الضغط على Ctrl +Shift +Enter) 


ثم قم بسحبها للأسفل, حتى تحصل على النتيجة المرجوه : 




و لفهم هذه المعادلة سنقوم بتجزئتها لمجموعة معادلات حتى نتمكن من فهمها, فأول معادلة بها هي معادلة LARGE


و الهدف من استخدامها ارجاع القيم بناء على المتغير الثاني فيها و الذي قمنا ببنائه بالمعادلة Trunc  مع معادلة الـ RAND و معادلة الـ ROW بحيث نحصل على الرقم الذي سيعيد النتيجة من الـ Array  في المتغير الأول 



و لبناء المصفوفة في المتغير الأول استخدمنا معادلة IF مع معادلة العد الشرطي COUNTIF لتقوم هذه المعادلة بعد القيم المكررة و بالتالي إستثنائها من النتيجة.



أما إذا لاحظنا فإن معيار العد في المعادلة COUNTIF, فهو مصفوفة لبناء أرقام :

 

ROW(INDIRECT("100:150"))

 

 

وتقوم هذه المعادلة ببناء مصفوفة ما بين الأرقام 100 و 150 و يجب أن نتأكد من أن هذه الأرقام هي نفسها التي ستخدمت في أول معادلة RANDBETWEEN



ثم يقوم الإكسيل بعد هذه المصفوفة داخل النطاق المحدد في المعادله COUNTIF, فإذا كانت القيم موجودة تكون النتيجة قيمة فارغه ("و هذا ما قدد يسبب خطاً في بعض الحالات عند إستخدام هذه المعادلة"), أما إذا كانت القيم موجودة فسيتم ربطها بمتغيرات الجزء الثاني 


 

ROW(INDIRECT("100:150"))

 


 و بذلك نكون قد حصلنا على أرقام عشوائية غير مكرره 

 

 


 

دمتم في حفظ الله 


يحيى حسين 

Excel MVP

اترك تعليقك

الاسم
:

البريد الإلكتروني
:


رقم الهاتف
:


التعليق
:

التعليقات