مشکل در تولید عدد تصادفی

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts

  • Ali Parsaei
    پاسخ داد
    نوشته اصلی توسط generalsamad
    با سلام
    چه کدی باید به کد بالا اضافه کنیم که وقتی تعداد اعداد تصادفی تمام شد از حلقه خارج بشه (for exit)
    ممنون
    مثلا" بايد تعداد خانه هاي متغيير C که A:A نوشته شده دقيقا" به اندازه همان محدوده تابع RANDBETWEEN تعيين گردد.
    در اين صورت وقتي به خانه آخر محدوده رسيد اگر دوباره دگمه را فشار دهيد صرفا" يک بار عمليات براي خانه آخر تکرار مي شود. البته نتيجه خانه آخر تغيير نخواهد کرد زيرا فقط يک عدد مانده که مي شود در آن جاي داد و بقيه اعداد در خانه هاي بالاتر استفاده شده.
    براي امتحان درستي مطلب فوق مي توانيد کد بالا را براي خانه هاي A1:A15 به صورت زير تغيير داده و امتحان کنيد:
    کد:
    Private Sub CommandButton1_Click()
    Dim C As Range
    For Each C In Range("A1:A15")
    If C = "" Then
    C.Select
    Exit For
    End If
    Next
    Selection.Value = "=RANDBETWEEN(1,15)"
     Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        Range("A1:A15").RemoveDuplicates Columns:=1, Header:=xlNo
        Range("A1:A15").NumberFormat = "0"
        If Selection.Value = "" Then
        CommandButton1_Click
        Else
        Exit Sub
        End If
    End Sub
    البته فکر کنم دوستان کدهاي خيلي حرفه اي تري مي توانند ارائه دهند، من صرفا" VBA را به صورت تجربي ياد گرفته ام به همين خاطر خيلي هم کدهايم حرفه اي نيست
    Last edited by Ali Parsaei; 2015/05/15, 16:38.

    Leave a comment:


  • generalsamad
    پاسخ داد
    با سلام
    چه کدی باید به کد بالا اضافه کنیم که وقتی تعداد اعداد تصادفی تمام شد از حلقه خارج بشه (for exit)
    ممنون

    Leave a comment:


  • Ali Parsaei
    پاسخ داد
    سلام،
    کد امنيتي حتما" بايد تصادفي باشد؟ يا اگر فقط يکتا باشد کافي است؟ اين دو با هم خيلي تفاوت دارد، دومي راحت است ولي براي اولي بايد از کد نويسي و ماکرو استفاده کنيد،
    شما با ماکرو ها آشنايي داريد؟
    به فرض مثال کد زير در ستون A اعداد تصادفي 12 رقمي يکتا ايجاد مي کند البته اگر داده هايتان در جاي ديگري باشد بايد يک کم تغييرش دهيد، مي شود يک دگمه در صفحه قرار دهيد و اين کد را به آن نسبت داده و هر موقع خواستيد با فشرده دگمه کد مربوطه در آخرين خانه خالي ايجاد خواهد شد:
    کد:
    Private Sub CommandButton1_Click()
    Dim C As Range
    For Each C In Range("A:A")
    If C = "" Then
    C.Select
    Exit For
    End If
    Next
    Selection.Value = "=RANDBETWEEN(100000000000,999999999999)"
     Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
        Range("A:A").NumberFormat = "0"
        If Selection.Value = "" Then
        CommandButton1_Click
        Else
        Exit Sub
        End If
    End Sub

    Leave a comment:


  • iranweld
    پاسخ داد
    نوشته اصلی توسط soosood
    از اساتید کسی نمیتونه کمک کنه !؟
    سلام
    یک فایل تهیه گردیده که بایستی در یک شیت جداگانه از آن استفاده نمایید عدد تصادفی تولید شده را در یک ستون دیگر لیست مینماید و در صورت تکراری بودن بصورت رنگی مشخص میگردد و شما عدد تصادفی جدید را محل مورد نظر کپی مینماید
    فقط بعد از دانلود فایل، پسوند فایل را xlsm نمایید سایت با آپلود فایلهای دارای ماکرو مشکل داره
    فایل های پیوست شده

    Leave a comment:


  • soosood
    پاسخ داد
    از اساتید کسی نمیتونه کمک کنه !؟

    Leave a comment:


  • soosood
    پاسخ داد
    نوشته اصلی توسط iranweld
    عدد رندم تولید شده در فرمول خود را ابتدا copy و سپس با past special و انتخاب value پیست نمایید تا عدد ثابت بماند.
    ممنون از راهنمایی شما ولی این عدد نمیخواهم تکراری باشه.شما در نظر بگیرید وقتی مثلا 30تا ردیف که پر شد چطوری کنترل کنم که تکراری نباشه.ضمنا می خواهم تا آنجا که میشه این کار بصورت اتوماتیک انجام بشه .نه اینکه یه شیت پراز عدد تصادفی ایجاد کنم بعدش برای هر ردیف یه مرتبه عدد رو کپی و پیست کنم.چون ممکنه این کار توسط یک اپراتور دیگه انجام بشه و دقت لازم را نداشته باشه.باز هم ممنون

    Leave a comment:


  • iranweld
    پاسخ داد
    عدد رندم تولید شده در فرمول خود را ابتدا copy و سپس با past special و انتخاب value پیست نمایید تا عدد ثابت بماند.

    Leave a comment:


  • soosood
    پاسخ داد
    نوشته اصلی توسط generalsamad
    با سلام
    فکر کنم مسله شما نیاز به یک کد داره که وقتیعدد تصادفی تولید میکنه اونو تبدیل به Value کنه که اون عدد تصادفی تغییر نکنه علاوه بر تبدیل اون عدد به Value، این عدد تصادفی باید منحصر به فرد (uniq) هم باشه
    درسته دوست من یه همچین چیزی لازم دارم . حالا چه کسی میتونه کدش رو بده ؟!

    Leave a comment:


  • soosood
    پاسخ داد
    درسته دوست من یه همچین چیزی لازم دارم . حالا چه کسی میتونه کدش رو بده ؟!

    Leave a comment:


  • iranweld
    پاسخ داد
    با سلام
    شما میتوانید یا در یک شیت دیگر به تعداد مورد نیاز عدد رندوم تولید نموده و هر بار بصورت رندم یکی را انتخاب کنید یا بایستی عدد رندم تولید شده در فرمول خود را ابتدا copy و سپس با past special و انتخاب value پیست نمایید تا عدد ثابت بماند.

    Leave a comment:


  • generalsamad
    پاسخ داد
    با سلام
    فکر کنم مسله شما نیاز به یک کد داره که وقتیعدد تصادفی تولید میکنه اونو تبدیل به Value کنه که اون عدد تصادفی تغییر نکنه علاوه بر تبدیل اون عدد به Value، این عدد تصادفی باید منحصر به فرد (uniq) هم باشه

    Leave a comment:


  • nikkhah
    پاسخ داد
    با سلام
    شما میتونید از پست زیر استفاده کنید :

    تولید اعداد تصادفی با طول دلخواه و ثابت

    باز هم اگر سوالی بود مطرح بفرمایید .

    Leave a comment:


  • soosood
    یک موضوع ایجاد کرد مشکل در تولید عدد تصادفی

    مشکل در تولید عدد تصادفی

    با عرض سلام خدمت دوستان محترم
    از اساتید درخواست دارم من رو راهنمایی کنید.
    من در یک واحد تولیدی کارمیکنم و برای هر محموله فروش رفته باید به غیر ازدرج شماره حواله یک کد امنیتی 12 رقمی تصادفی نیز ثبت و ذخیره نمایم.از فرمول randbetween استفاده کردم ولی هر بار که با سطر جدیدی کار میکنم عدد های قبلی تغییر می کنند.عکس مربوط به بخشی از فرم رو پیوست کردم.در واقع یک فرمول میخوام که در ستون کد امنیتی از این فرم بگذارم تا هروقت عددی بعنوان شماره محموله وارد شد یک عدد تصادفی 12 رقمی که در ردیفهای قبلی تکرار نشده باشد ثبت کرده و دیگر تغییر نکند .تا بتوان این کد ها رو بعدا ردیابی کرد.ممنونم از اینکه وقت میگذارید.
    فایل های پیوست شده
چند لحظه..