تابع RANDARRAY در اکسل
تابع RANDARRAY یک تابع تولید اعداد تصادفی مبتنی بر آرایه در اکسلهای جدید (Microsoft 365 و Excel 2021 به بعد) است. این تابع به شما امکان میدهد بهسرعت آرایههایی از اعداد تصادفی با ابعاد دلخواه و بازه مشخص تولید کنید و از مزایای قابلیتهای Dynamic Array در اکسل مدرن بهرهمند شوید.
سینتکس و پارامترها
| سینتکس | توضیح |
|---|---|
| RANDARRAY([rows],[columns],[min],[max],[whole_number]) | تولید آرایه اعداد تصادفی |
- rows (اختیاری): تعداد سطرهای آرایه. پیشفرض 1.
- columns (اختیاری): تعداد ستونها. پیشفرض 1.
- min (اختیاری): حداقل مقدار (پیشفرض 0).
- max (اختیاری): حداکثر مقدار (پیشفرض 1).
- whole_number (اختیاری): اگر TRUE باشد، اعداد صحیح (کامل) برگشت داده میشوند؛ در غیر این صورت، اعشاری.
توجه: اگر whole_number را TRUE کنید، اعداد صحیح در بازه [min, max] بازگردانده میشوند (بازه شامل دو سر است).
مثالهای پایه
=RANDARRAY(5,3)این فرمول یک آرایه 5 سطری و 3 ستونی از اعداد تصادفی بین 0 و 1 تولید میکند. خروجی بهصورت Spill در سلول آغازین ظاهر میشود و مقادیر پس از هر بازمحاسبه تغییر خواهند کرد.
=RANDARRAY(4,2,10,50,TRUE)چهار سطر و دو ستون از اعداد صحیح تصادفی بین 10 و 50 تولید میکند (شامل 10 و 50).
نکات مهم درباره رفتار و بازمحاسبه (Volatility)
- مانند تابع RAND و RANDBETWEEN، RANDARRAY تابعی volatile است؛ یعنی هر بار که کاربرکاری در ورکبوک انجام دهد، یا کلکولیشن اجرا شود (مثلاً با F9)، مقادیر تغییر میکنند.
- برای «قفل کردن» یا ثابت نگه داشتن مقادیر تولید شده، از Copy → Paste Values استفاده کنید یا مقادیر را توسط ماکرو در سلولها بنویسید.
- تولید آرایههای بزرگ میتواند موجب کندی و افزایش زمان محاسبات گردد. در صورت نیاز به مجموعههای بزرگ تصادفی، از Power Query یا VBA برای یکبار تولید و ذخیره استفاده کنید.
نمونههای پیشرفته و ترکیب با توابع دیگر
تولید نمونه تصادفی بدون تکرار (مثلاً انتخاب تصادفی 10 آیتم از لیست) — بهترین روش استفاده از SORTBY برای شافل کردن لیست است:
=SORTBY(A2:A101, RANDARRAY(ROWS(A2:A101)))این فرمول محدوده A2:A101 را بر اساس آرایهای تصادفی که به RANDARRAY داده شده مرتب میکند؛ نتیجه، همان لیست شافلشده است. اگر میخواهید فقط 10 مورد اول را بگیرید، میتوانید از INDEX یا TAKE استفاده کنید یا مثلاً:
=INDEX(SORTBY(A2:A101, RANDARRAY(ROWS(A2:A101))), SEQUENCE(10))در این مثال ابتدا لیست شافل میشود سپس ده مورد اول توسط INDEX و SEQUENCE انتخاب میگردد.
نمونه: تولید نمونه تصادفی از اعداد 1 تا N بدون تکرار
=SORTBY(SEQUENCE(100), RANDARRAY(100))این فرمول اعداد 1 تا 100 را با SEQUENCE تولید میکند و سپس با SORTBY و یک آرایه تصادفی آنها را شافل میکند. اگر نیاز به 5 عدد تصادفی دارید:
=INDEX(SORTBY(SEQUENCE(100), RANDARRAY(100)), SEQUENCE(5))در نتیجه 5 عدد یکتا و تصادفی از بازه 1 تا 100 دریافت میکنید.
ترکیب با LET برای خوانایی و کارایی بهتر
=LET(n, 100,
shuffled, SORTBY(SEQUENCE(n), RANDARRAY(n)),
INDEX(shuffled, SEQUENCE(10))
)در این کد با LET متغیرها نامگذاری شدهاند تا فرمول خواناتر شود: ابتدا n تعریف و سپس آرایه شافلشده ساخته میشود و در نهایت 10 مقدار اول خروجی گرفته میشود. اما توجه داشته باشید LET جلوی بازمحاسبه RANDARRAY را نمیگیرد؛ فقط ساختار فرمول را منظمتر میکند.
عملکرد در جداول و Spill Range
- فرمول RANDARRAY هنگام اجرا در یک سلول “میریزد” (spill) و مقادیر در محدودهای از سلولها نمایش داده میشود.
- هرگونه تغییر در محل یا حذف بخش از این Spill Range ممکن است خطای #SPILL! ایجاد کند یا تغییر رفتار دهد.
- برای استفاده از خروجی RANDARRAY در جداول (Excel Tables)، بهتر است خروجی را ابتدا Paste Values کنید یا از فرمولهای جداسازی (مثلاً INDEX) استفاده نمایید تا جدول دچار نوسان و عدم ثبات نشود.
مقایسه با توابع دیگر و محدودیتها
- RANDARRAY نسبت به RAND و RANDBETWEEN انعطافپذیرتر است چون میتواند آرایه چندبعدی تولید کند.
- اگر از نسخههای قدیمیتر اکسل (قبل از Office 365 Dynamic Array) استفاده میکنید، RANDARRAY در دسترس نیست؛ در این صورت باید از RANDBETWEEN به صورت ردیفی یا از VBA/Power Query استفاده کنید.
- تولید مقادیر یکتا مستقیم با RANDARRAY ممکن است دشوار باشد (ممکن است تکراری تولید شود)، لذا برای نمونههای بدون تکرار از روشهای شافل کردن SEQUENCE یا SORTBY استفاده کنید.
چگونه مقدار تولیدشده را ثابت کنیم؟ (روشهای پیشنهادی)
- Copy -> Paste Values: سادهترین و سریعترین راه.
- حالت محاسبه دستی (Manual Calculation): قبل از تولید مقدار، Workbook را در حالت Manual تنظیم کنید؛ سپس بعد از تولید، هرجا لازم بود مقدار را نگه دارید.
- استفاده از VBA برای نوشتن مقادیر یکبار در سلولها: مثال ساده در ادامه.
Sub FillRandomValues()
Dim rng As Range
Set rng = Range("B2:D6") ' محدوده مورد نظر
rng.Value = Evaluate("RANDARRAY(" & rng.Rows.Count & "," & rng.Columns.Count & ",1,100,TRUE)")
End Subاین ماکرو یک آرایه اعداد صحیح تصادفی بین 1 و 100 برای محدوده B2:D6 تولید و مقادیر را به صورت ثابت در سلولها قرار میدهد. از Evaluate برای اجرای تابع RANDARRAY در محیط VBA استفاده شده است.
نکات حرفهای و موارد استفاده در دنیای واقعی
- تست سناریوها (What-if) و شبیهسازی Monte Carlo — استفاده از RANDARRAY برای تولید ماتریس دادههای تصادفی.
- نمونهگیری و ایجاد لیستهای تصادفی برای آزمایش، آموزش یا قرعهکشی.
- آمادهسازی دادههای تصادفی برای آزمون فرمولها یا داشبوردها (با توجه به هشدارهای عملکردی و volatility).
- ترکیب با توابع آماری مانند AVERAGE, STDEV, MEDIAN و تحلیل نتایج شبیهسازیها.
خلاصه و جمعبندی
RANDARRAY تابعی قدرتمند و منعطف برای تولید آرایههای اعداد تصادفی در اکسلهای مدرن است. دانستن نحوه ترکیب آن با توابعی مانند SORTBY، SEQUENCE، INDEX و LET به شما امکان میدهد نمونههای تصادفی یکتا، ماتریسها و شبیهسازیهای پیچیده را به آسانی بسازید. با این حال باید به تاثیر آن روی عملکرد و خصوصیت بازمحاسبه توجه کنید و در مواقع لازم مقدار تولیدشده را ثابت نمایید.
آیا این مطلب برای شما مفید بود ؟




