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

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

قام بنشر

هذا الكود يمكنني من عمل توزيع عشوائي لاسماء المدرسين وتكون نتيجة التوزيع في عمود

t

 

  كيف اجعل النتيجة تظهر في عمد اخر مثلا
w

وتكون البيانات الناتجة مختلفة عما هي في العمود الاول
=========================================
Sub randomCollection()
    Dim Names As New Collection
    Dim lastRow As Long, i As Long, j As Long, lin As Long
    Dim wk As Worksheet
 
    Set wk = Sheets("البيانات الأساسية")
 
    With wk
        lastRow = .Cells(.Rows.Count, "b").End(xlUp).Row
    End With
 
    For i = 2 To lastRow
        Names.Add wk.Cells(i, 1).Value
    Next i
 
    lin = 1
    For i = lastRow - 1 To 1 Step -1
        j = Application.WorksheetFunction.RandBetween(1, i)
        lin = lin + 1
        Range("t" & lin) = Names(j)
        Names.Remove j
    Next i
 
End Sub

قام بنشر

جرب هذا الملف

الماكرو

Option Explicit
Sub Rand_Names()
If ActiveSheet.Name <> "Salim" Then Exit Sub
Dim i%, k%, Final_Row%
Final_Row = Cells(Rows.Count, 1).End(3).Row
 With CreateObject("System.Collections.SortedList")
       For i = 2 To Final_Row
        .Item(Rnd) = Range("a" & i)
       Next i
   For i = 0 To .Count - 1
      Cells(k + 2, 3) = .GetByIndex(i)
       k = k + 1
   Next i
 End With

End Sub

الملف مرفق

 

Random_list.xlsm

قام بنشر

حضرتك في ملفك المرفق اتعمل التوزيع على عمود الـ
c
فقط

انا عايز يتعمل توزيع عشوائي تاني مثلا في عمود 
d
و
f

 

 ويكون التوزيع العشوائي في كل عمود مختلف عن باقي الاعمدة
2 hours ago, ali mohamed ali said:

قم بتغيير هذا السطر من الكود

Range("t" & lin) = Names(j)

الى

 Range("w" & lin) = Names(j)

ولكم جزيل الشكر

 

حضرتك انا مش عايز اكرره 
انا عايز يتعمل ترتيب عشوائي مختلف عن العمود الاول

قام بنشر

تم معالجة الامر

الكود

Option Explicit
Sub Rand_Names()
If ActiveSheet.Name <> "Salim" Then Exit Sub
Dim i%, k%, Final_Row%
Dim x As Long
x = Cells(2, Columns.Count).End(1).Column + 1
If x < 4 Then x = 4
Final_Row = Cells(Rows.Count, 3).End(3).Row
 With CreateObject("System.Collections.SortedList")
       For i = 2 To Final_Row
        .Item(Rnd) = Range("c" & i)
       Next i
   For i = 0 To .Count - 1
      Cells(k + 2, x) = .GetByIndex(i)
       k = k + 1
   Next i
 End With

End Sub

الملف

 

Random_list 2.xlsm

قام بنشر

انت رجل عظيم بجد ربنا يبارك فيك ويحفظك

معلش يا فندم .. هل ممكن نتخطى الفراغات .. يعني لو فيه فراغ في عمود المصدر .. ممكن الفراغ ده يتخطاه؟ وميتكررش حد في نفس العمود ؟ يعني اكيد العمود هيبقى ناقص من تحت مثلا؟
هل ده ممكن ؟

ثانيا .. هل ممكن ميبقاش فيه تكرار في نفس الصف الا بعد ما الاسماء كلها تنضاف لنفس الصف؟ فبعد كدا يتكرر ؟

1.PNG

قام بنشر

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

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

قام بنشر

بارك الله فيك استاذي - الحمد لله مشكلة تخطى الفراغات تم حلها ..

---------------------
(1)
معلش يا فندم مازالت مشكلة تكرار نفس الاسم في نفس الصف
هل ممكن يتكرر الاسم في نفس الصف .. لكن بعد استنفاذ كل الاسماء في نفس الصف؟
---------------------

(2)
مع الضغط على الزرار .. الملف بينزل تحت .. هل ممكن حلها؟
---------------------
(3) واخر نقطة:
ايضا ازاى اغير عمود المصدر بدلا من الـ
C
اخليه 
F

وعمود النتائج يبدأ من 
U

------------------------------

واشكر لك سعة صدرك

////رد

لا تنس اننا نتعامل مع اعداد عشوائية لذلك يمكن ان يتكرر اي صف (وليس الصف الاول فقط) لكن هذا يحدث يما نسبته 0.5 %

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

لعدم تنزيل الملف الى اسفل امسح هذه العبارة من الكود

 

Range("c" & i).Select

22222222.png

قام بنشر
1 دقيقه مضت, ali mohamed ali said:

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

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

يرجى حذف هذه الجملة من الكود (وقعت سهواُ)

Range("c" & i).Select

لانها تشكل عيئاً على الكود بالاضافة الى انها تجعل رأس الجداول غير مرئية بعد تنفيذه 

 

قام بنشر

تمام معالي الاستاذ سليم
أخر نقطة معلش حضرتك لم تجاوبني عليها 

ايضا ازاى اغير عمود المصدر بدلا من الـ
C
اخليه 
F

وعمود النتائج يبدأ من 
U

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

تقبل اعتذاري إن كان فيه مشقة سببتها لحضرتك
مكنش مقصود اكتب العنوان ده - لكن أكيد حضرتك عارف أن الفكرة في بدايتها بتكون صغيرة - لكنها بتطور بعد ذلك - وده سبب كثرة التعديلات اللي طلبتها بعد كدا لحضرتك
العمل قارب على الانتهاء بفضل الله ثم بمجهودات حضرتك 

 

أنا لازم أشكر حضرتك على صنيعك معايا 
وخدمتك الغالية علينا - اللي من شأنها تطوير العمل الإداري داخل مؤسسة الأزهر الشريف
وأخيرا : استمسح حضرتك:

 النظر في الملف المرفق لعله يكون أخر طلب ان شاء الله

test.xlsm

تم تعديل بواسطه moh.elmadany
قام بنشر

ممكن هذا الماكرو يحل المشكلة

Option Explicit
Sub eliminat_dup()
Dim xRg1, xRg2 As Range
Dim k1%, k2%, i%, j%
Dim Temp, m%, xx%: xx = 1
Dim c%, t%: t = [a11]
c = Cells(1, Columns.Count).End(1).Column
If c < 21 Then Exit Sub
Set xRg1 = Cells(1, 21).CurrentRegion
Set xRg2 = Cells(1, 21 + t + 1).CurrentRegion
k1 = xRg1.Rows.Count: k2 = xRg2.Rows.Count

'===============================
 For i = 2 To k1
    For j = 1 To t - 1
    If xx >= k1 Then xx = 1

    m = Application.CountIf(xRg1.Rows(i), xRg1.Cells(i, j))
    If m > 1 Then
       Temp = xRg1.Cells(i, j)
        If (i + xx) < k1 \ 2 Then
         xRg1.Cells(i, j) = xRg1.Cells(i + xx, j)
       Else
       xx = 1
        xRg1.Cells(i, j) = xRg1.Cells(i + xx, j)
        End If
         xRg1.Cells(i + xx, j) = Temp
          xx = xx + 1
     End If
    Next
    Next
xx = 1
'==========================
For i = 2 To k2
    For j = 1 To t - 1
    If xx >= k2 Then xx = 1
    m = Application.CountIf(xRg2.Rows(i), xRg2.Cells(i, j))
    If m > 1 Then
       Temp = xRg2.Cells(i, j)
        If (i + xx) < k2 \ 2 Then
         xRg1.Cells(i, j) = xRg2.Cells(i + xx, j)
       Else
       xx = 1
        xRg1.Cells(i, j) = xRg2.Cells(i + xx, j)
        End If
         xRg2.Cells(i + xx, j) = Temp
          xx = xx + 1
     End If
    Next

    Next
'==============================
End Sub

 

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

ألا يمكن يا فندم التعديل على الماكرو الأصلي الي وضعته حضرتك
لانه قوي جدا ولا ينقصه ألا تلك النقطة

وشكرا يا فندم - في الماكرو الذي وضعته ..

 لكن هل عمود i هو عمود المصدر (مصدر الاسماء)؟

تم تعديل بواسطه moh.elmadany
قام بنشر (معدل)

مع الأسف يا فندم - مازالت مشكلة التكرار في نفس الصف كما هي 
 

ياريت لو فيه معيار للتكرار - يعني التكرار يكون بعد رقم صفوف معين

 

Capture.PNG

تم تعديل بواسطه moh.elmadany
قام بنشر

حضرتك موجود يا أستاذنا؟؟

سبق و قلت لك (اننا نتعامل مع اعداد عشوائية لذلك يمكن ان يتكرر اي صف ولا يمكن السيطرة على هذه الحالة)

ما الضرر اذن ان تقوم بكبسة زر اخرى كي لا يكون اول صف متكرر

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

المشكلة حضرتك ان الصف بالطريقة دي بيتكرر فيه الاسم احيانا لاكثر من عشر مرات !

ووفقا لقانون العمل .. لابد ان لا يتكرر الا بعد انتهاء كل الاسماء 

تم تعديل بواسطه moh.elmadany

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