• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ÇOKEĞERSAY ile aynı sütunda birden fazla şarta uyan değerleri toplama yapmadan bulma

  • Konbuyu başlatan Konbuyu başlatan dedenet
  • Başlangıç tarihi Başlangıç tarihi
Katılım
18 Ağustos 2009
Mesajlar
202
Excel Vers. ve Dili
Excel 365 - Türkçe
ÇOKEĞERSAY'la 6 ve 7.sınıf öğrencilerinin kaç tanesinin TAKDİR aldığını
bulmak istiyorum. Sınıflar A sütununda, belge B sütununda
Ama hem 6 hem 7.sınıflar için ayrı ayrı formül yazıp toplama yapmadan sonuca ulaşmak istiyorum.

ÇOKEĞERSAY(A:A;6;B:B;"TAKDİR")+ÇOKEĞERSAY(A:A;7;B:B;"TAKDİR")

bu şekilde formül yazmak istemiyorum. Tek formülde 6 ve 7.sınıfları bir defada hesaplamak istiyorum.

NOT: Bu şekilde toplayarak niye hesaplamıyorsun diye sorabilirsiniz ama asıl yazacağım formülde çok sayıda kriter var çok fazla toplama yapmak zorundayım.
Bu örneği basitçe hazırladım asıl yapmak istediğim daha karmaşık.
Yardımcı olursanız sevinirim.



A B

SINIF BELGE
6 TAKDİR
7 TEŞEKKÜR
6 TEŞEKKÜR
8 TAKDİR
6 TAKDİR
5 TEŞEKKÜR
7 TAKDİR
8 TAKDİR
6 TEŞEKKÜR
8 TAKDİR
 
Merhaba.

Aşağıdaki formülü deneyin.
 
Son düzenleme:
Veriler A1:B10 aralığındaysa; Sayın ASLAN7410'ın önerdiği çözüme alternatif olarak aşağıdaki {dizi formülünü} önerebilirim;

Yani; formülü hücreye girdikten sonra Ctrl + Shift + Enter tuşlayacaksınız.

Kod:
=topla((A1:A10={6\7})*(B1:B10="TAKDİR"))

.

Veya, normal formül girişi olarak;

Kod:
=topla.çarpım((A1:A10={6\7})*(B1:B10="TAKDİR"))

.
 
O zaman önerilen iki formül birleştirilince ortaya böyle bir formül çıkıyor..
Kod:
[SIZE="2"]=[COLOR="Red"]TOPLA.ÇARPIM[/COLOR]((A:A={6;7})*(B:B="TAKDİR"))[/SIZE]
 
Murat Bey;

Aslında bu tür formüllerde A:A ve/veya B:B gibi ucu açık alan tanımlamalarından mümkün mertebe kaçınmak gerekir. Zira; Excel'in komple A ve B sütunlarında onbinlerce hücrede istenilen kriterleri sorgulaması Excel'i boş yere yoracaktır.

Bu nedenle, A1:B10 gibi belli alanlar kullanmak her zaman daha efektif olacaktır.

.
 
Merhaba,

Alan genişlediği durumlarda daha hızlı çalışması için alternatif olarak kullanılabilir.

Kod:
=TOPLA.ÇARPIM(ÇOKEĞERSAY(A1:A50000;{6;7};B1:B50000;"takdir"))

.
 
Sınıfları hücreye başvuru yaparak kullanmak isterseniz tag'daki formülü kullanabilirsiniz.
Dizi formülüdür.

Kod:
=TOPLA(--(B2:B11="TAKDİR")*(A2:A11=DEVRİK_DÖNÜŞÜM(E1:E2)))
 
Sınıf numaralarını alt alta değil , sütunlara doğru yan yana yazarsanız dizi formülü olmadan'da yapabilirsiniz.

Kod:
=SUMPRODUCT((B2:B11="TAKDİR")*--(A2:A11=E1:F1))
 
Konu satır/sütun kullanılması tavsiyesiyle biraz karışmış ama, ben Ömer Beyin mesajı üzerine devam edeyim;

A sütunundaki verilerin (eğer nümerik verilerse) son satırını yine Excel'in kendisine hesaplatmak belki de biraz daha faydalı olacaktır. Bu şekilde; varsayım olarak düşünülen 50.000 hücre yerine gerçek anlamda dolu bir alanın üzerinde çalışmış oluruz

Kod:
Bakınız aşağıda 11 No'lu mesaj

Ayrıca, alternatif olarak bu formülü B sütunundaki "Text - Metin" değerler içeren hücreler arasında son dolu hücreyi bulmak üzere revize edersek;

Kod:
Bakınız aşağıda 11 No'lu mesaj



Türkçe Excel için;


SUMPRODUCT = TOPLA.ÇARPIM

INDIRECT = DOLAYLI

MATCH = KAÇINCI

REPT = YİNELE


(Not: Küçük/Büyük harf hatası var mı mesajımda, bilemiyorum ....)

.
 
Son düzenleme:
Haluk Bey,

Formülün son parantez içinde de son satır tespiti yapılması gerekmez mi?
 
Evet Korhan Bey, yukarıdaki formüllerde geçen "B10" ifadesi için de aynı şeyi yapmamız gerekiyor.

Benim gözümden kaçmış, teşekkürler.

Revize edilmiş formüller şöyle olabilir;

-"A" sütunundaki "nümerik veriler" esas alınarak,

Kod:
=SUMPRODUCT(((INDIRECT(("$A$1:A"&MATCH(9,99999999999999E+307;A:A)))={6\7})*(INDIRECT(("$B$1:B"&MATCH(9,99999999999999E+307;A:A)))="TAKDİR")))
Veya;

- "B" sütunundaki "Text - Metin" değerler esas alınarak,

Kod:
=SUMPRODUCT(((INDIRECT(("$A$1:A"&MATCH(REPT("Z";255);B:B)))={6\7})*(INDIRECT(("$B$1:B"&MATCH(REPT("Z";255);B:B)))="TAKDİR")))
.
 
Son düzenleme:
O zaman önerilen iki formül birleştirilince ortaya böyle bir formül çıkıyor..
Kod:
[SIZE="2"]=[COLOR="Red"]TOPLA.ÇARPIM[/COLOR]((A:A={6;7})*(B:B="TAKDİR"))[/SIZE]

Murat Bey;

Aslında bu tür formüllerde A:A ve/veya B:B gibi ucu açık alan tanımlamalarından mümkün mertebe kaçınmak gerekir. Zira; Excel'in komple A ve B sütunlarında onbinlerce hücrede istenilen kriterleri sorgulaması Excel'i boş yere yoracaktır.

Bu nedenle, A1:B10 gibi belli alanlar kullanmak her zaman daha efektif olacaktır.

.
Haluk Bey,
Paylaştığım hiçbir formülde bu tarz alan tanımlamalarını göremezsiniz, sadece mesajımda da belirttiğim gibi; yalnızca sunulan iki formülü birleştirdim.

Bilginize..
 
Cevap veren herkese teşekkür ederim.
Bu tür bir işlem ÇOKEĞERSAY kullanılarak çözülür diye düşünüyordum.
Ancak TOPLA.ÇARPIM ile çözüleceğini hiç bilmiyordum.
Öğrenmiş oldum, herkese teşekkürler,
Ancak yine bu işlem ÇOKEĞERSAY ile yapılabilir mi, yapılırsa nasıl yapılır.
Yardımcı olan olursa sevinirim.

ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR") şeklinde yapmaya çalıştım.
Sonuç hatalı çıktı.
 
Kod:
=TOPLA.ÇARPIM(ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR"))

Yada

Kod:
=TOPLA(ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR"))

Şeklinde yazmanız gerekir.

Çünkü; {6;7} şartlarına göre formül 2 boyutlu dizi üretecektir. Örneğin 6 ve takdir olan 12 değerini üretsin, 7 ve takdir olan 23 değerini üretsin, buna göre;

ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR") formülü {12;23} dizi değerini üretir. Dizi sonucunu toplamak için;

=topla(formül) ilavesi gerekir.

=TOPLA(ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR"))

Gibi.

Topla ilavesini yapmazsanız {12;23} dizideki ilk değer olan 12 yi sonuç olarak verir.

.
 
Gerçi soruyu soran arkadaştan yeterli cevabı alamadım ama, Ömer Beyin son mesajını görünce ben konuyu daha değişik anladığımı gördüm.

Sanırım, benim formüllerin sonuna bir de A sütunundaki dolu en son hücreye kadar olan verileri de formül alternatiflerinin her birinde en sona ilave etmek gerekiyor.

Örneğin;

Kod:
=SUMPRODUCT(((INDIRECT(("$A$1:A"&MATCH(REPT("Z";255);B:B)))={6\7})*(INDIRECT(("$B$1:B"&MATCH(REPT("Z";255);B:B)))="TAKDİR"))*(INDIRECT(("$A$1:A"&MATCH(REPT("Z";255);B:B)))))
gibi .....

Bu arada Ömer Bey, sanırım; " 2 boyutlu dizi" derken, " 2 elemanlı dizi" demek istediniz. Zira, "2 boyutlu dizi" başka bir şey. Ama, dalgınlıkla böyle ifade ettiğinizi biliyorum.

Selamlar,


.
 
Kod:
=TOPLA.ÇARPIM(ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR"))

Yada

Kod:
=TOPLA(ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR"))

Şeklinde yazmanız gerekir.

Çünkü; {6;7} şartlarına göre formül 2 boyutlu dizi üretecektir. Örneğin 6 ve takdir olan 12 değerini üretsin, 7 ve takdir olan 23 değerini üretsin, buna göre;

ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR") formülü {12;23} dizi değerini üretir. Dizi sonucunu toplamak için;

=topla(formül) ilavesi gerekir.

=TOPLA(ÇOKEĞERSAY(A:A;{6;7};B:B;"TAKDİR"))

Gibi.

Topla ilavesini yapmazsanız {12;23} dizideki ilk değer olan 12 yi sonuç olarak verir.

.

6. ve 7.sınıfta olan takdir ve teşekkür alanların sayısı hesaplamak istersek;

=TOPLA(ÇOKEĞERSAY(A:A;{6;7};B:B;{"TAKDİR";"TEŞEKKÜR"}))

şeklinde formül yazmak istedim ama netice doğru çıkmıyor.

TOPLA yerine TOPLA.ÇARPIM o da olmadı. Nasıl yapabilirim
 
Bu mesaj silindi.
 
Son düzenleme:
Gerçi soruyu soran arkadaştan yeterli cevabı alamadım ama, Ömer Beyin son mesajını görünce ben konuyu daha değişik anladığımı gördüm.

Sanırım, benim formüllerin sonuna bir de A sütunundaki dolu en son hücreye kadar olan verileri de formül alternatiflerinin her birinde en sona ilave etmek gerekiyor.

Örneğin;

Kod:
=SUMPRODUCT(((INDIRECT(("$A$1:A"&MATCH(REPT("Z";255);B:B)))={6\7})*(INDIRECT(("$B$1:B"&MATCH(REPT("Z";255);B:B)))="TAKDİR"))*(INDIRECT(("$A$1:A"&MATCH(REPT("Z";255);B:B)))))
gibi .....

Bu arada Ömer Bey, sanırım; " 2 boyutlu dizi" derken, " 2 elemanlı dizi" demek istediniz. Zira, "2 boyutlu dizi" başka bir şey. Ama, dalgınlıkla böyle ifade ettiğinizi biliyorum.

Selamlar,

.

Merhaba Haluk Bey,

Haklısınız dalgınlıktan yanlış yazım olmuş.

Bilgi ve açıklamalar için teşekkürler.

.
 
Geri
Üst