ریچارد نیاز به تولید رشته های تصادفی 15 و 20 کاراکتری دارد و فکر می کرد که ممکن است بتواند این کار را در اکسل انجام دهد. رشته ها می توانند شامل حروف و اعداد و بدون فاصله باشند. او در مورد تابع RANDBETWEEN می داند، اما واقعا نمی بیند که چگونه می تواند برای اهداف او مفید باشد.
در واقع، می توانید از تابع RANDBETWEEN به عنوان هسته فرمول خود استفاده کنید. با قرار دادن تمام کاراکترهای ممکن در سلول A1 شروع کنید. به عنوان مثال، می توانید 62 کاراکتر زیر را در A1 قرار دهید:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
حال فرمول زیر را در نظر بگیرید:
=MID(A1,RANDBETWEEN(1,LEN(A1)),1)
این کار از توابع MID و RANDBETWEEN برای انتخاب یک نویسه تصادفی منفرد از هر کاراکتری که در سلول A1 قرار داده اید استفاده می کند. اکنون، برای طولانیتر کردن آنچه برگردانده میشود، فقط باید ترکیب این فرمول اصلی را با استفاده از کاراکتر آمپرساند آغاز کنید. به عنوان مثال، موارد زیر 2 کاراکتر را برمی گرداند:
=MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)
اگر می خواهید 15 کاراکتر را برگردانید، فقط باید از 15 تکرار از فرمول اصلی استفاده کنید:
=MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)&MID(A1,RANDBETWEEN(1,LEN(A1)),1)
این می تواند (بدیهی است) به فرمول های بسیار طولانی منجر شود. خوشبختانه، اگر از نسخه اکسل ارائه شده با مایکروسافت 365 استفاده می کنید، برای تولید رشته های مورد نظر خود نیازی به استفاده از فرمول های بسیار طولانی ندارید. در عوض می توانید از تابع قدرتمند RANDARRAY همراه با تابع CONCAT استفاده کنید.
شما قبلاً کاراکترهای پایه خود را در سلول A1 دارید. بنابراین، در سلول A2، بسته به طول رشته ای که می خواهید ایجاد کنید، 15 یا 20 را قرار دهید. (در واقع، شما می توانید هر طول دیگری را در A2 قرار دهید، اما ریچارد به طور خاص به رشته های 15 و 20 کاراکتری نیاز داشت.) اکنون از فرمول زیر استفاده کنید:
=CONCAT(MID(A1,RANDARRAY(1,A2,1,LEN(A1),TRUE),1))
نتیجه یک رشته متن تصادفی است، فقط به طولی که می خواهید.
اگر ترجیح میدهید از یک ماکرو استفاده کنید، میتوانید به راحتی یک تابع تعریفشده توسط کاربر ایجاد کنید که یک رشته کاراکتر تصادفی با هر طولی که میخواهید برمیگرداند:
Function RandChars(iLen As Integer) As String
Dim sSource As String
Dim J As Integer
Dim sTemp As String
Dim AWF As WorksheetFunction
Set AWF = Application.WorksheetFunction
sSource = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
sSource = sSource & "abcdefghijklmnopqrstuvwxyz"
sSource = sSource & "0123456789"
sTemp = ""
For J = 1 To iLen
sTemp = sTemp & Mid(sSource,AWF.RandBetween(1, Len(sSource)), 1)
Next J
RandChars = sTemp
End Function
کاراکترهایی که در sSource قرار می دهید آنهایی هستند که برای کنار هم قرار دادن رشته تصادفی استفاده می شوند. ماکرو از تابع کاربرگ RANDBETWEEN برای بیرون کشیدن کاراکترها از sSource استفاده می کند.
برای استفاده از ماکرو، به سادگی از فرمولی مانند این در کاربرگ خود استفاده کنید:
=RandChars(15)
پارامتری که به تابع می دهید طول رشته ای را که توسط تابع برگردانده می شود را تعیین می کند.