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

Katılım
18 Ağustos 2009
Mesajlar
199
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14/06/2022
Ç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
 

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,800
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Altın Üyelik Bitiş Tarihi
29.03.2025
Merhaba.

Aşağıdaki formülü deneyin.
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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"))
.
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
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]
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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.

.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
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"))
.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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)))
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,634
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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))
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,274
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Haluk Bey,

Formülün son parantez içinde de son satır tespiti yapılması gerekmez mi?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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:

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
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..
 
Katılım
18 Ağustos 2009
Mesajlar
199
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14/06/2022
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ı.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
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.

.
 
Katılım
18 Ağustos 2009
Mesajlar
199
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14/06/2022
Çok teşekkürler Ömer Bey
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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,


.
 
Katılım
18 Ağustos 2009
Mesajlar
199
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14/06/2022
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
 

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,800
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Altın Üyelik Bitiş Tarihi
29.03.2025
Bu mesaj silindi.
 
Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
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.

.
 
Üst