Excel formülü: Rastgele isim listesi -

Genel formül

=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))

Özet

Rastgele bir ad listesi oluşturmak için, mevcut bir listeden rastgele adlar seçmek için DİZİN işlevini ve RASGELENDİRME işlevini kullanabilirsiniz. Gösterilen örnekte, D5'teki formül şöyledir:

=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))

bu, adlandırılmış "adlar" aralığından (B5: B104) 10 rastgele değer döndürür.

Açıklama

Temelde, bu formül, 100 ad içeren "adlar" adı verilen adlandırılmış bir aralıktan 10 rastgele ad almak için INDEX işlevini kullanır. Örneğin, listeden beşinci ismi almak için INDEX'i şu şekilde kullanıyoruz:

=INDEX(names,5)

Ancak, bu durumda işin püf noktası, bilinen bir konumda tek bir ad istemememiz, 1 ile 100 arasında bilinmeyen yerlerde 10 rastgele ad istememizdir. Bu, RANDARRAY işlevi için mükemmel bir kullanım örneğidir ve belirli bir aralıktaki rastgele tamsayı kümesi. Baştan sona çalışarak, 1 ile 100 arasında 10 rastgele sayı elde etmek için RANDARRAY'i şu şekilde kullanırız:

RANDARRAY(10,1,1,COUNTA(names)

COUNTA işlevi, listedeki adların dinamik sayısını elde etmek için kullanılır, ancak bu durumda COUNTA'yı sabit kodlu bir 100 ile değiştirebiliriz ve aynı sonucu elde ederiz:

=INDEX(names,RANDARRAY(10,1,1,100,TRUE))

Her iki durumda da RASGDİZİ aşağıdaki gibi görünen bir dizide 10 sayı döndürecektir:

(64;74;13;74;96;65;5;73;84;85)

Not: Bu numaralar yalnızca rastgeledir ve gösterilen örnekle doğrudan eşleşmez.

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

=INDEX(names, (64;74;13;74;96;65;5;73;84;85)

INDEX'e 10 satır numarası verdiğimiz için, verilen pozisyonda her biri bir isme karşılık gelen 10 sonuç verecektir. 10 rastgele ad, D5 hücresinden başlayan bir yayılma aralığında döndürülür.

Not: RANDARRAY geçici bir işlevdir ve çalışma sayfası her değiştirildiğinde yeniden hesaplanarak değerlere başvurulmasına neden olur. Değerlerin otomatik olarak sıralanmasını durdurmak için formülleri kopyalayabilir, ardından formülleri statik değerlere dönüştürmek için Özel Yapıştır> Değerler'i kullanabilirsiniz.

Yinelemeleri önleyin

Yukarıdaki formülle ilgili bir sorun (ihtiyaçlarınıza bağlı olarak), RASGDİZİ'nin bazen yinelenen sayılar üretmesidir. Başka bir deyişle, RANDARRAY'in 10 benzersiz sayı döndüreceğinin garantisi yoktur.

Listeden 10 farklı isim sağlamak için, formülü isimlerin tam listesini rasgele sıralayacak şekilde uyarlayabilir ve ardından listeden ilk 10 ismi alabilirsiniz. F5'teki formül bu yaklaşımı kullanır:

=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))

Buradaki yaklaşım yukarıdaki ile aynıdır - isimler listesinden 10 değer almak için INDEX kullanıyoruz. Bununla birlikte, formülün bu versiyonunda, listeyi INDEX'e vermeden önce rasgele bir şekilde sıralıyoruz:

SORTBY(names,RANDARRAY(COUNTA(names)))

Burada, SORTBY işlevi, burada daha ayrıntılı olarak açıklandığı gibi, RANDARRAY işlevi tarafından oluşturulan bir dizi değeriyle adların listesini rastgele sıralamak için kullanılır.

Son olarak, 10 değer almamız gerekiyor. Zaten rastgele bir sırayla isimlerimiz olduğundan, SEQUENCE işlevi tarafından oluşturulan bir dizi ile ilk 10'u şu şekilde isteyebiliriz:

SEQUENCE(10)

SEQUENCE, bir ardışık sayı dizisi oluşturur:

(1;2;3;4;5;6;7;8;9;10)

bu, INDEX işlevine satır bağımsız değişkeni olarak döndürülür. INDEX daha sonra orijinal formüldeki gibi dökülme aralığındaki ilk 10 adı döndürür.

Ilginç makaleler...