Excel formülü: İNDİS işlevli diziyi döndür -

İçindekiler

Genel formül

=SUM(INDEX(range,N(IF(1,(1,2,3)))))

Özet

DİZİN'in bir öğe dizisini başka bir işleve döndürmesini sağlamak için, EĞER ve N işlevlerine dayalı belirsiz bir numara kullanabilirsiniz. Gösterilen örnekte, E5'teki formül şöyledir:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

burada "veri", B5: B10 olarak adlandırılan aralıktır.

Açıklama

INDEX'in birden fazla değeri başka bir işleve döndürmesi şaşırtıcı derecede zordur. Örnek olarak, aşağıdaki formül, çok hücreli dizi formülü olarak girildiğinde, "veri" adlı aralıktaki ilk üç öğeyi döndürmek için kullanılabilir.

(=INDEX(data,(1,2,3)))

Sonuçlar, doğru olarak 10, 15 ve 20'yi içeren D10: F10 aralığında görülebilir.

Bununla birlikte, formülü TOPLA işlevinde sarmalarsak:

=SUM(INDEX(data,(1,2,3)))

Nihai sonuç, bir dizi formülü olarak girilse bile 45 iken, 10'dur. Sorun, INDEX'in yalnızca dizideki ilk öğeyi TOPLA işlevine döndürmesidir. INDEX'i birden çok öğeyi TOPLA'ya döndürmeye zorlamak için, dizi sabitini N ve IF işlevlerinde şu şekilde kaydırabilirsiniz:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

45 sonucunu döndürür. Benzer şekilde, bu formül:

=SUM(INDEX(data,N(IF(1,(1,3,5)))))

10, 20 ve 30'un toplamı olan 60'ı doğru bir şekilde döndürür.

Bu belirsiz tekniğe bazen "referans alma" adı verilir, çünkü INDEX'in sonuçları hücre referansları olarak işlemesini ve ardından dizideki ilk öğe hariç tümünü bırakmasını durdurur. Bunun yerine, INDEX, SUM girişine tam bir değer dizisi sunar. Jeff Weir'in burada stackoverflow hakkında iyi bir açıklaması var.

Okuyucular için not: Bunun neden işe yaradığından tam olarak emin değilim. Net bir açıklama sunabilirseniz, dahil etmek için güncelleme yapacağım.

Ilginç makaleler...