ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
61 visibility
موضوع: آفیس توسط:

اکسل در تولید اعداد تصادفی عالی است، اما در پر کردن محدوده ای از سلول ها با اعداد تصادفی که در آن هیچ عدد خاصی دو بار تکرار نمی شود، عالی است. به عنوان مثال، ممکن است بخواهید 52 سلول را با اعداد 1 تا 52 به ترتیب تصادفی پر کنید. (این بسیار شبیه به انتخاب کارت ها از یک عرشه به ترتیب تصادفی است، جایی که یک کارت خاص فقط یک بار قابل انتخاب است. بنابراین، عنوان این نکته است.)

بدیهی است که هیچ تابع اکسل داخلی برای ارائه این قابلیت وجود ندارد، بنابراین شما باید با ماکروها کار کنید. خوشبختانه، ایجاد چنین ماکرو خیلی سختی نیست. ماکرو زیر به خوبی این کار را انجام می دهد:

Sub FillRand()
    Dim nums() As Integer
    Dim maxval As Integer
    Dim nrows As Integer, ncols As Integer
    Dim j As Integer, k As Integer
    Dim Ptr As Integer
    Randomize

    Set s = Selection
    maxval = s.Cells.Count
    nrows = s.Rows.Count
    ncols = s.Columns.Count

    ReDim nums(maxval, 2)

    Fill the initial array
    For j = 1 To maxval
        nums(j, 1) = j
        nums(j, 2) = Int((Rnd * maxval) + 1)
    Next j

    Sort the array based on the random numbers
    For j = 1 To maxval - 1
        Ptr = j
        For k = j + 1 To maxval
            If nums(Ptr, 2) > nums(k, 2) Then Ptr = k
        Next k
        If Ptr <> j Then
            k = nums(Ptr, 1)
            nums(Ptr, 1) = nums(j, 1)
            nums(j, 1) = k
            k = nums(Ptr, 2)
            nums(Ptr, 2) = nums(j, 2)
            nums(j, 2) = k
        End If
    Next j

    Fill in the cells
    Ptr = 0
    For j = 1 To nrows
        For k = 1 To ncols
            Ptr = Ptr + 1
            s.Cells(j, k) = nums(Ptr, 1)
        Next k
    Next j
End Sub

این ماکرو از یک آرایه دو بعدی (nums) استفاده می کند تا بفهمد از کدام اعداد و ترتیب استفاده از آنها استفاده می شود. نزدیک به ابتدای ماکرو، آرایه با یک عدد ثابت (1 از طریق تعداد سلول ها) و یک عدد تصادفی بین 1 و تعداد سلول ها پر می شود. سپس از این عدد دوم برای مرتب سازی آرایه استفاده می شود. هنگامی که آرایه ذخیره می شود، قرار دادن اعداد اصلی در سلول ها کار ساده ای است.

به هر حال، دلیل استفاده از آرایه دو بعدی این است که تابع Rnd که VBA برای تولید اعداد تصادفی استفاده می کند، می تواند مقادیر تکراری را برگرداند. بنابراین، حتی اگر بعد دوم آرایه می تواند موارد تکراری در خود داشته باشد، وقتی آرایه در نهایت مرتب شد، بعد اول تکراری نخواهد داشت.

برای استفاده از ماکرو، با انتخاب سلول هایی که می خواهید با مقادیر متوالی به ترتیب تصادفی پر شوند، شروع کنید. وقتی ماکرو را اجرا می کنید، آن محدوده پر می شود. به عنوان مثال، اگر ده سلول را انتخاب کنید و سپس ماکرو را اجرا کنید، آن سلول ها با اعداد 1 تا 10 به ترتیب تصادفی پر می شوند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 55 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 101 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 169 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 93 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 152 visibility

31.4k سوال

16.7k پاسخ

620 دیدگاه

13.8k کاربر

24 نفر آنلاین
0 عضو و 24 مهمان در سایت حاضرند
بازدید امروز: 87134
بازدید دیروز: 33245
بازدید کل: 33850720
...