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

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

قام بنشر

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

الأخوة الأفاضل : جزاكم الله خيراً علي ما تقدموه من حلول إبداعية للعديد من المشاكل التي تواجهه المستخدمين لبرنامج الإكسل (خاصة المبتدئين)،وجعله الله في ميزان حسناتكم

وأرجو المساعدة في إيجادة دالة أو كود لإعادة ترتيب مجموعة من الأرقام المحددة بشكل عشوائي ، ومرفق ملف للمطلوب

ترتيب عشوائي.xlsx

قام بنشر

شكراً جزيلاً  أخي الفاضل أ. شريف لسرعة الرد ومحاولة المساعدة 

ولكن للأسف الشديد الدالة (RANDBETWEEN) لا تفي بالغرض المطلوب، وقد أرسلت ملف آخر   تم  تطبيق فيه الدالة (RANDBETWEEN)  وأوضحت أنها لا تصل للهدف المراد إنجازه

حيث أن المطلوب إعادة توزيع عدد محدد من التكرارات لكل رقم من (3:1) في كل عمود وأن يظل  التكرار ثابت لكل عدد ،،،  والمطلوب فقط إعادة التوزيع بشكل عشوائي لتلك الأرقام وألا تكون بشكل متسلسل ومرتب  
  

2-ترتيب عشوائي.xlsx

قام بنشر (معدل)

يمكنك اضافة عمود جديد  واستخدام الدالة

=rand()

سوف تقوم بملء ارقام عشوائية

ثم بعد ذلك قم بترتيب القيم  تصاعديا او تنازليا

كما هو الحالف في المرفق  واعد كتابة المعادلة في كل مره

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

kutools

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

kutools

اختر

range - sort range randomly -   cells in each column

ستقوم بعمل المطلوب

تحميل الاداة من اللينك اسفله

https://d2d42mpnbqmzj3.cloudfront.net/downloads/KutoolsforExcelSetup.exe

 

تم تعديل بواسطه shreif mohamed
  • Like 1
قام بنشر

جرب هذا الملف

الكود

Option Explicit
'Excel VBA to generate random number
'Created by Salim on 31/3/2018
Sub Generate_Uniq_Random()
Dim T%
If ActiveSheet.Name <> "Salim" Then GoTo Exit_sub
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
Dim myStart As Long
Dim myEnd As Long
Dim x As Byte
Dim i As Long, K%

Dim lr_B: lr_B = Range("A1").CurrentRegion.Rows.Count
 If lr_B < 2 Then lr_B = 2
 Range("b2:U" & lr_B).ClearContents
Dim a()
myStart = [Y2]
myEnd = [Z2]
ReDim a(0 To myEnd - myStart)
For x = 2 To 21
     With CreateObject("System.Collections.SortedList")
      Randomize
        For i = myStart To myEnd
         .Item(Rnd) = i
        Next i
        
        For i = 0 To .Count - 1
         a(i) = .GetByIndex(i)
        Next
      
      For K = 2 To lr_B - 1 Step (myEnd - myStart + 1)
         For T = 0 To myEnd - myStart
          Cells(K + T, x) = a(T)
         Next
      Next
    End With
Next
Exit_sub:
With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

الملف مرفق

 

 

ترتيب عشوائي SALIM.xlsm

  • Like 1
قام بنشر

 

 

رائع أخي الغالي أستاذ/ شريف محمد

اضافة عمود جديد واستخدام الدالة =rand() ، ثم بعد ذلك ترتيب القيم  تصاعدياً او تنازلياً ، حل بسيط ورائع ولكن يعيبه أنه يأخذ بيانات كل صف معاً أثناء إعادة التوزيع العشوائي للتكرارات.

أما الإضافة  kutools    فهي حقاً رائعة (جداً جداً جداً ..... ) وقد قامت والحمد لله بالمطلوب علي أكمل وجه، جزاك الله خيراً

والشكر مقدماً لكل الأستاذ/علي محمد  ، والأستاذ/سليم حاصبيا علي محاولتهم تقديم العون والمساعدة وأود أن أعرف منهم سبب ظهور هذه الرسالة عند تشغيل الكود

كود أ.علي محمد تظهر رسالة (OUT OF MEMORY)

كود أ. سليم حاصبيا يظهر خطأ ولعله في السطر

With CreateObject("System.Collections.SortedList")

حيث يظهر باللون الأصفر

لذا أرجو منهم توضيح الخطأ حتى تعم الفائدة للجميع

جزاكم الله خيراً وجعل كل ما تقدمونه من وقت وفكر وجهد في ميزان حسناتكم

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

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

Important Information