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

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

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

السادة الأفاضل /

سلام الله عليكم

الملف المرفق هو لأحد الأخوة الزملاء"أكرمه الله "

لإدراج أرقام عشوائية غير مكررة

برجاء التعديل على الكود بحيث لا يمسح سوى العمود المدرج به الأرقام فقط ..

لأنه حاليا يمسح الصفحة كاملة..

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

أرقام عشوائية.rar

تم تعديل بواسطه دغيدى
قام بنشر

برجاء التعديل على الكود بحيث لا يمسح سوى العمود المدرج به الأرقام فقط ..

لأنه حاليا يمسح الصفحة كاملة..

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

الاستاذ الفاضل جمال (عمدتنا)

سيصبح الكود هكذا


    Sub Rnd_N_REP()

    Dim myrange As Range, rr, cc, pp As Integer

    rr = [B2]: cc = [B1]

    pp = rr * cc + 1

    Range("C3").SpecialCells (xlCellTypeLastCell)


    Set myrange = Range("C3", [c1000])

    myrange.ClearContents

   ' myrange.Interior.ColorIndex = xlNone


    Set myrange = Range("C3", [c3].Offset(rr - 1, cc - 1))


    'myrange.Interior.ColorIndex = 6

    Randomize

    For i = 0 To pp - 2

    rw = i Mod rr + 3

    If rr = cc Then cl = Int(i / cc) + 3 Else cl = i Mod cc + 3

10	    x = Int(Rnd * pp)

	    For Each ce In myrange

		    If ce = x Or x = 0 Then GoTo 10

	    Next ce


    Cells(rw, cl).Value = x

    Next i

    [c3].Select

    End Sub

قام بنشر

أخى الفاضل / أبو أحمد

سلام الله عليكم

برجاء تعديل الكود على أن تكون الأرقام العشوائية اعتبارا من D3

وتفضلوا بكل الحب والتقدير

قام بنشر


Sub Rnd_N_REP()

    Dim myrange As Range, rr, cc, pp As Integer

    rr = [B2]: cc = [B1]

    pp = rr * cc + 1

    Range("d3").SpecialCells (xlCellTypeLastCell)


    Set myrange = Range("d3", [d1000])

    myrange.ClearContents

   ' myrange.Interior.ColorIndex = xlNone


    Set myrange = Range("d3", [d3].Offset(rr - 1, cc - 1))


    'myrange.Interior.ColorIndex = 6

    Randomize

    For i = 0 To pp - 2

    rw = i Mod rr + 3

    If rr = cc Then cl = Int(i / cc) + 3 Else cl = i Mod cc + 4

10		  x = Int(Rnd * pp)

		    For Each ce In myrange

				    If ce = x Or x = 0 Then GoTo 10

		    Next ce


    Cells(rw, cl).Value = x

    Next i

    [d3].Select

    End Sub

الأخوة الأفاضل /

أشكركم

لقد توصلت إلى الحل

قام بنشر

السلام عليكم

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


Sub Ashwai()

Dim i As Integer, JX As Integer

Dim a() As Long

Dim ET_A As Boolean

Dim XXX As Long, EX As Long, NU_A As Long

On Error Resume Next

Range(Cells(4, 4), Cells(Rows.Count, 4)).ClearContents

XXX = Application.InputBox(prompt:="ادخل اول الارقام العشوائية" _

		, Title:="تأليف أرقام عشوائية", Default:=1, Type:=1)

EX = Application.InputBox(prompt:="ادخل الارقام النهائية العشوائية" _

		, Title:="تأليف أرقام عشوائية", Default:=100, Type:=1)

If EX = 0 Then Exit Sub

If EX > 15000 Then EX = 15000

If EX > EX - XXX + 1 Then

MsgBox "لايمكن تأليف سلسلة رقمية بداية اكبر من النهاية " _

& "ابداء برقم اصغر"

Exit Sub

End If

ReDim a(EX)

Randomize

a(1) = Int((EX - XXX + 1) * Rnd + XXX)

For i = 2 To EX

Do

NU_A = Int((EX - XXX + 1) * Rnd + XXX)

ET_A = False

For JX = 1 To i - 1

If NU_A = a(JX) Then ET_A = True: Exit For

Next JX

Loop While ET_A

a(i) = NU_A

Next i

For i = 1 To EX

Cells(i + 3, 4) = a(i)

Next i

End Sub

وهذا المرفق

AS_A.rar

قام بنشر

أخى الفاضل العيدروس

سلام الله عليكم

أثابكم الله على ماتقدموه من خير ..

شكرا لكم

قام بنشر

تسلم ايدك استاذى خبور خير

منكم نتعلم دائماً

لى طلب اخير لو سمحت لى

فى خانة رقم الجلوس من الى

اذا كان عدد الطلبة 57 و الفرق بين الارقام 6 يكرر رقم الجلوس الاخير و السرى

فهل ممكن نترك هذه الخانة فارغة و يكون الرقم واحد فقط

و جزاكم الله خيراً

قام بنشر

تسلم ايدك استاذى خبور خير

يكرر رقم الجلوس الاخير و السرى

فهل ممكن نترك هذه الخانة فارغة و يكون الرقم واحد فقط

و جزاكم الله خيراً

ماذا تقصد اخي هل تريد ان يكون رقم الجلوس نفس رقم السري

في المجموعه الاخيره

اذا كان هذا قصدك وارجو ان لايكون كذلك

سيكون تصرف خاطئ كيف يكون رقم الجلوس نفسه رقم السري

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

وربما يكون لك فكره جديده ارجو توضيحها بالتفصيل

قام بنشر

السلام عليكم

جمعة مباركة

استبدل الجزئية هذه


If ib Then

    iSeat = MyNSeat + (Contgrob * MyStp)

    iSry = Sry + (Contgrob * MyStp)

    kh_Add_Num iRow + Contgrob, St - 1

End If

بهذه الجزئية

If ib Then

    iSeat = MyNSeat + (Contgrob * MyStp)

    iSry = Sry + (Contgrob * MyStp)

    ii = iRow + Contgrob

    kh_Add_Num ii, St - 1

    If St = 1 Then Union(Range("B" & ii), Range("D" & ii)).ClearContents

End If

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

تسلم ايدك استاذى خبور خير

كالعادة عبقرى فى كل شى

طلب اخير لاحظت اذا تم تنفيذ الماكرو مرة اخرى

يتم تغير الارقام فهل ممكن نجعل هذه الخاصية اختيارية بى تشك بوكس

اذا رغبت فى تغير الارقام

تسلم ايدك و جزاك الله خيراً

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

الازرار لاتعمل والتنسيق جيد

ولكن نريد ارقام الجلوس تبدأ من العمود الثاني ليكون جيد الطباعه

قام بنشر

لماذا تغلق الملف بباسوورد

هل اغلقه صاحبه العلامه خبورعليك نحن نبيع كما اشترينا

حكايه الحمايه سيئه

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

استاذ saffaa

اسف لم اقصد قفل الملف عن احد

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

و انا تعلمت الكثير من هذا الموقع العظيم و من الاستاذ الكبير خبور

و الزاير شغالة كويس بس علم فى زر تشغيل

الملف مرفق مفتوح و اعتذر مرة اخرى

و شكراً

السري خبور.rar

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

السلام عليكم

تم اعادة ترتيب الكود ليظهر الخلايا بشكل واضح

ليتم التغيير فيه حسب الطلب


Option Explicit


Sub kh_Rnd_Num()

Dim ib As Boolean

Dim Sry, iSry

Dim MyAr$, MySr$, MyNum$

Dim MyCon%, MyStp%, iSp%, NRnd%, St%, MyNSeat%, iSeat%, iRow%, Contgrob%

Dim r%, rr%, i%, ii%, v%, Last%

Const ch As String * 1 = " "

'========================================

Range(Range("A3:E3"), Range("A3:E3").End(xlDown)).ClearContents

Range(Range("I3:J3"), Range("I3:J3").End(xlDown)).ClearContents

'========================================

MyStp = [G2]                 '  فرق الارقام

MyNSeat = [G4]          '  بداية رقم الجلوس

Sry = [G6]            '  بداية الرقم السري

MyCon = [G8]                '  اجمالي الطلبة

iRow = 3           '  اول صف لوضع البيانات

'========================================

MyStp = MyStp + 1

ib = MyCon Mod MyStp

Contgrob = Int(MyCon / MyStp) + IIf(ib, 1, 0)

If ib Then St = MyCon Mod MyStp

'========================================

For r = 1 To Contgrob

1   NRnd = Int((Rnd * Contgrob) + 1) - 1

    MyNum = NRnd & ch

    If InStr(ch & MyAr, ch & MyNum) Then GoTo 1

    MyAr = MyAr & MyNum

Next

MyAr = Trim(MyAr)

'========================================

iSp = MyStp - 1

For r = 0 To Contgrob - 1

    ii = Split(MyAr)(r)

    iSeat = MyNSeat + (r * MyStp)

    If ib Then

        If ii > NRnd Then v = MyStp - St Else v = 0

        If r = Contgrob - 1 Then iSp = St - 1

    End If

    iSry = Sry + (ii * MyStp) - v

    rr = iRow + r

    Last = (r * MyStp) + iRow

                Range("A" & rr).Value = iSeat

    If iSp Then Range("B" & rr).Value = iSeat + iSp

                Range("C" & rr).Value = iSry

    If iSp Then Range("D" & rr).Value = iSry + iSp

                Range("E" & rr).Value = ii

    For i = 0 To iSp

                Range("I" & Last).Offset(i, 0).Value = iSeat + i

                Range("J" & Last).Offset(i, 0).Value = iSry + i

    Next

Next

'========================================

End Sub

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

السلام عليكم

تم اعادة ترتيب الكود ليظهر الخلايا بشكل واضح

ليتم التغيير فيه حسب الطلب


Option Explicit


Sub kh_Rnd_Num()

Dim ib As Boolean

Dim Sry, iSry

Dim MyAr$, MySr$, MyNum$

Dim MyCon%, MyStp%, iSp%, NRnd%, St%, MyNSeat%, iSeat%, iRow%, Contgrob%

Dim r%, rr%, i%, ii%, v%, Last%

Const ch As String * 1 = " "

'========================================

Range(Range("A3:E3"), Range("A3:E3").End(xlDown)).ClearContents

Range(Range("I3:J3"), Range("I3:J3").End(xlDown)).ClearContents

'========================================

MyStp = [G2]				 '  فرق الارقام

MyNSeat = [G4]		  '  بداية رقم الجلوس

Sry = [G6]			'  بداية الرقم السري

MyCon = [G8]				'  اجمالي الطلبة

iRow = 3		   '  اول صف لوضع البيانات

'========================================

MyStp = MyStp + 1

ib = MyCon Mod MyStp

Contgrob = Int(MyCon / MyStp) + IIf(ib, 1, 0)

If ib Then St = MyCon Mod MyStp

'========================================

For r = 1 To Contgrob

1   NRnd = Int((Rnd * Contgrob) + 1) - 1

	MyNum = NRnd & ch

	If InStr(ch & MyAr, ch & MyNum) Then GoTo 1

	MyAr = MyAr & MyNum

Next

MyAr = Trim(MyAr)

'========================================

iSp = MyStp - 1

For r = 0 To Contgrob - 1

	ii = Split(MyAr)(r)

	iSeat = MyNSeat + (r * MyStp)

	If ib Then

		If ii > NRnd Then v = MyStp - St Else v = 0

		If r = Contgrob - 1 Then iSp = St - 1

	End If

	iSry = Sry + (ii * MyStp) - v

	rr = iRow + r

	Last = (r * MyStp) + iRow

				Range("A" & rr).Value = iSeat

	If iSp Then Range("B" & rr).Value = iSeat + iSp

				Range("C" & rr).Value = iSry

	If iSp Then Range("D" & rr).Value = iSry + iSp

				Range("E" & rr).Value = ii

	For i = 0 To iSp

				Range("I" & Last).Offset(i, 0).Value = iSeat + i

				Range("J" & Last).Offset(i, 0).Value = iSry + i

	Next

Next

'========================================

End Sub

بعد اذنكم ضعوا الكود في هذا الملف الموجود اسفل المشاركة

مع رجاء ان يبدأ من العمود التاني B3 الى F3

وزر طباعه الصفحة ونقل رقم الجلوس و السري في الشيت وكده يكون اكتمل

جزاك الله خيرا استاي خبور

السري خبور.rar 13.04K 5 عدد مرات التحميل

تم تعديل بواسطه saffaa

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