Excel formülü: Rastgele metin dizeleri oluşturma -

İçindekiler

Genel formül

=INDEX(characters,RANDARRAY(n,1,1,count,TRUE))

Özet

Rastgele metin dizelerinden oluşan bir liste oluşturmak için, INDEX, RANDARRAY ve TEXTJOIN'e dayalı bir formül kullanabilirsiniz. Gösterilen örnekte, D5'teki formül şöyledir:

=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))

nerede karakter adlı aralık B5 geçerli: B30 AZ harflerini içeren. Formül sütundan aşağıya kopyalanırken, her satırda 6 karakterlik yeni bir metin dizisi oluşturur.

Açıklama

Excel 365'teki yeni dinamik dizi formülleri, formüllerle belirli zorlu sorunları çözmeyi çok daha kolay hale getirir.

Bu örnekte amaç, rastgele 6 karakterli kodlardan oluşan bir liste oluşturmaktır. Rastgelelik, Excel 365'teki yeni bir işlev olan RANDARRAY işlevi tarafından işlenir. RASGELENDİRME, INDEX'e 6 rastgele sayı döndürür ve bu sayı, adlandırılmış aralık karakterlerinden 6 rastgele değer alır. İNDEKS'den elde edilen sonuçlar daha sonra METİNBİRLEŞTİR işleviyle birlikte birleştirilir.

Gösterilen örnekte, D5'teki formül şöyledir:

=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))

İçten dışa doğru çalışarak RANDARRAY işlevi, 1-26 arasında altı rastgele sayı içeren bir dizi oluşturmak için kullanılır:

RANDARRAY(6,1,1,26,TRUE) // return array like (14;5;21;7;25;3)

Döndürülen dizinin RANDARRAY işlevinin her bir örneğiyle değişeceğini unutmayın. Ayrıca, RASGDİZİ geçici bir işlev olduğundan, her çalışma sayfası değişikliğinde yeniden hesaplama yapacaktır.

Bu rastgele sayı dizisi, satırlar bağımsız değişkeni olarak doğrudan INDEX işlevine döndürülür:

INDEX(chars,(14;5;21;7;25;3))

INDEX'i 6 satır istediğimiz için, 6 sonucu şöyle bir dizide geri alıyoruz:

("N","E","U","G","Y","C")

Bu dizi, metin1 bağımsız değişkeni olarak METİNBİRLEŞTİR işlevine döndürülür:

=TEXTJOIN("",1,("N","E","U","G","Y","C")) // returns "NEUGYC"

TEXTJOIN, sınırlayıcı olarak boş bir dize kullanacak ve boş değerleri yok sayacak şekilde ayarlanmıştır. Bu konfigürasyonla TEXJOIN, tüm değerleri bir araya getirir ve "NEUGYC" gibi 6 karakterlik bir metin dizesi döndürür.

Karakterleri programlı olarak say

Karakterlerin boyutunu doğrudan RANDARRAY işlevine kodlamak yerine, dizideki öğeleri saymak ve bu sayıyı RANDARRAY'e döndürmek için COUNTA işlevini kullanabilirsiniz:

RANDARRAY(6,1,1,COUNTA(chars),TRUE)

Bu, karakterlerin boş hücre içermediğini varsayar .

Programlı olarak karakter oluştur

AZ harfleri temel sayısal kod değerlerine sahip olduğundan, metin dizelerini bir aralık kullanmak yerine program aracılığıyla birleştirmek için kullanılan karakter dizisini oluşturmak mümkündür. Bu CHAR işlevi ve SEQUENCE işlevi ile yapılabilir.

ASCII 65-90 ile eşleşen tüm büyük harfleri AZ içeren bir dizi oluşturmak için:

=CHAR(SEQUENCE(26,1,65,1)) // returns ("A","B","C",… )

ASCII 97-122'ye karşılık gelen küçük harfleri oluşturmak için:

=CHAR(SEQUENCE(26,1,97,1)) // returns ("a","b","c",… )

Bu kod, aşağıdaki gibi "karakterleri" değiştirmek için orijinal formüle bırakılabilir:

=TEXTJOIN("",1,INDEX(CHAR(SEQUENCE(26,1,65,1)),RANDARRAY(6,1,1,26,TRUE)))

Diğer karakterler

Adlandırılmış aralık karakterindeki karakterler istediğiniz herhangi bir şey olabilir. 26 karakterden fazla (veya daha az) eklerseniz, 26 sayısını uygun şekilde ayarlayın veya COUNTA'yı yukarıda açıklandığı gibi kullanın.

Excel 365 olmadan

It is possible to generate random text strings without Excel 365, but the formula is more tedious and redundant. Since we don't have a good way to get 6 random numbers all at once, we use the RANDBETWEEN function to get one random value at a time:

=INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))

This formula uses the INDEX function to retrieve one random value at a time from the named range chars, and the 6 results are concatenated together into a single text string. Line breaks added for readability.

It is also possible to generate values A-Z directly with CHAR and RANDBETWEEN like this:

=CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))

Bu versiyonda, RANDBETWEEN, AZ harfleri için (büyük harf) ASCII değerine karşılık gelen 65 ile 90 (dahil) arasında bir değer döndürüyor. CHAR işlevi sayısal değeri bir harfe çevirir. Yukarıdaki gibi, tüm sonuçlar tek bir metin dizesinde birleştirilir.

Ilginç makaleler...