Seçili döneme göre ortalama hesaplama

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
669
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
Merhaba seçili hücreden referans alacak şekilde iki tarih arası ortalama hesaplatmak istiyorum. Soru ve açıklaması ektedir.
Teşekkür ederim.
 

Ekli dosyalar

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,677
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba,

Deneyiniz.

Bu benim bulabildiğim çözüm kesinlikle kısa ve anlaşılır bir çözümü vardır.
Size önerim: tüm tarihleri bir hücreye yazın ve ona göre sorgulama yapın.

G5,
Kod:
=TOPLA.ÇARPIM(($A$2:$A$1000>=TARİH(YIL($E$5);AY($E$5)-24+1;1))*($A$2:$A$1000<=TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1))*($B$2:$B$1000))/TOPLA.ÇARPIM(($A$2:$A$1000>=TARİH(YIL($E$5);AY($E$5)-24+1;1))*($A$2:$A$1000<=TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1)))
G6,
Kod:
=TOPLA.ÇARPIM(($A$2:$A$1000>TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1))*($A$2:$A$1000<=$E$5)*($B$2:$B$1000))/TOPLA.ÇARPIM(($A$2:$A$1000>TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1))*($A$2:$A$1000<=$E$5))
Farklı bir öneri,
G5,
Kod:
=ORTALAMA(DOLAYLI(("b"&KAÇINCI(TARİH(YIL($E$5);AY($E$5)-24+1;1);$A:$A;0))&":b"&KAÇINCI(TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1);$A:$A;0)))
G6,
Kod:
=ORTALAMA(DOLAYLI("b"&KAÇINCI(TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1);$A:$A;0)+1&":B"&KAÇINCI($E$5;$A:$A;0)))
 
Son düzenleme:

AdemCan

Altın Üye
Destek Ekibi
Katılım
1 Eylül 2008
Mesajlar
1,386
Excel Vers. ve Dili
2019 TR
G5 Hücresi
Kod:
=ÇOKEĞERORTALAMA(B2:B222;A2:A222;">="&SERİAY(E5;-24)+1;A2:A222;"<="&SERİAY(SERİAY(E5;-24)+1;11))
G6 Hücresi
Kod:
=ÇOKEĞERORTALAMA(B2:B222;A2:A222;">="&SERİAY(SERİAY(E5;-24)+1;11)+1;A2:A222;"<="&SERİAY(SERİAY(SERİAY(E5;-24)+1;11)+1;11))

Tercihim makro :)
Adım adım hesaplama işlemi
Kod:
Sub ortalama_hesapla()
sayi_son = Range("B" & Rows.Count).End(3).Row
tarih_son = Range("A" & Rows.Count).End(3).Row

ilk_donem_baslangic = WorksheetFunction.EoMonth(CDate([E5]), -24) + 1
ilk_donem_bitis = WorksheetFunction.EoMonth(CDate(ilk_donem_baslangic), 11)
ilk_donem_ortalama = WorksheetFunction.AverageIfs(Range("B2:B" & sayi_son), Range("A2:A" & tarih_son), ">=" & ilk_donem_baslangic, Range("A2:A" & tarih_son), "<=" & ilk_donem_bitis)

ikinci_donem_baslangic = WorksheetFunction.EoMonth(CDate(ilk_donem_baslangic), 11) + 1
ikinci_donem_bitis = WorksheetFunction.EoMonth(CDate(ikinci_donem_baslangic), 11)
ikinci_donem_ortalama = WorksheetFunction.AverageIfs(Range("B2:B" & sayi_son), Range("A2:A" & tarih_son), ">=" & ikinci_donem_baslangic, Range("A2:A" & tarih_son), "<=" & ikinci_donem_bitis)

sonuc = ((ikinci_donem_ortalama / ilk_donem_ortalama) * 100) - 100

[G5] = ilk_donem_ortalama
[G5].NumberFormat = "#,##0.00"

[G6] = ikinci_donem_ortalama
[G6].NumberFormat = "#,##0.00"

[G7] = sonuc
[G7].NumberFormat = "#,##0.00"

End Sub
 

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
669
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
Merhaba,

Deneyiniz.

Bu benim bulabildiğim çözüm kesinlikle kısa ve anlaşılır bir çözümü vardır.
Size önerim: tüm tarihleri bir hücreye yazın ve ona göre sorgulama yapın.

G5,
Kod:
=TOPLA.ÇARPIM(($A$2:$A$1000>=TARİH(YIL($E$5);AY($E$5)-24+1;1))*($A$2:$A$1000<=TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1))*($B$2:$B$1000))/TOPLA.ÇARPIM(($A$2:$A$1000>=TARİH(YIL($E$5);AY($E$5)-24+1;1))*($A$2:$A$1000<=TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1)))
G6,
Kod:
=TOPLA.ÇARPIM(($A$2:$A$1000>TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1))*($A$2:$A$1000<=$E$5)*($B$2:$B$1000))/TOPLA.ÇARPIM(($A$2:$A$1000>TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1))*($A$2:$A$1000<=$E$5))
Farklı bir öneri,
G5,
Kod:
=ORTALAMA(DOLAYLI(("b"&KAÇINCI(TARİH(YIL($E$5);AY($E$5)-24+1;1);$A:$A;0))&":b"&KAÇINCI(TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1);$A:$A;0)))
G6,
Kod:
=ORTALAMA(DOLAYLI("b"&KAÇINCI(TARİH(YIL(TARİH(YIL($E$5);AY($E$5)-24+1;1));AY(TARİH(YIL($E$5);AY($E$5)-24+1;1))+12-1;1);$A:$A;0)+1&":B"&KAÇINCI($E$5;$A:$A;0)))
Her iki cevap için de teşekkür ederim.
Doğru çalışıyor.
 

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,677
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Ben olsam sayın @faye_efsane çözümünü kullanırdım.
İyi çalışmalar.
 

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
669
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
G5 Hücresi
Kod:
=ÇOKEĞERORTALAMA(B2:B222;A2:A222;">="&SERİAY(E5;-24)+1;A2:A222;"<="&SERİAY(SERİAY(E5;-24)+1;11))
G6 Hücresi
Kod:
=ÇOKEĞERORTALAMA(B2:B222;A2:A222;">="&SERİAY(SERİAY(E5;-24)+1;11)+1;A2:A222;"<="&SERİAY(SERİAY(SERİAY(E5;-24)+1;11)+1;11))

Tercihim makro :)
Adım adım hesaplama işlemi
Kod:
Sub ortalama_hesapla()
sayi_son = Range("B" & Rows.Count).End(3).Row
tarih_son = Range("A" & Rows.Count).End(3).Row

ilk_donem_baslangic = WorksheetFunction.EoMonth(CDate([E5]), -24) + 1
ilk_donem_bitis = WorksheetFunction.EoMonth(CDate(ilk_donem_baslangic), 11)
ilk_donem_ortalama = WorksheetFunction.AverageIfs(Range("B2:B" & sayi_son), Range("A2:A" & tarih_son), ">=" & ilk_donem_baslangic, Range("A2:A" & tarih_son), "<=" & ilk_donem_bitis)

ikinci_donem_baslangic = WorksheetFunction.EoMonth(CDate(ilk_donem_baslangic), 11) + 1
ikinci_donem_bitis = WorksheetFunction.EoMonth(CDate(ikinci_donem_baslangic), 11)
ikinci_donem_ortalama = WorksheetFunction.AverageIfs(Range("B2:B" & sayi_son), Range("A2:A" & tarih_son), ">=" & ikinci_donem_baslangic, Range("A2:A" & tarih_son), "<=" & ikinci_donem_bitis)

sonuc = ((ikinci_donem_ortalama / ilk_donem_ortalama) * 100) - 100

[G5] = ilk_donem_ortalama
[G5].NumberFormat = "#,##0.00"

[G6] = ikinci_donem_ortalama
[G6].NumberFormat = "#,##0.00"

[G7] = sonuc
[G7].NumberFormat = "#,##0.00"

End Sub
Çözümler için teşekkür ederim.

Makro tamam ancak, formül doğru hesaplamıyor, kontrol eder misiniz.
 

Ekli dosyalar

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,677
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba,

sayın @faye_efsane formülünü,
Kod:
=ÇOKEĞERORTALAMA(B2:B222;A2:A222;">="&SERİTARİH(E5;-24+1);A2:A222;"<="&SERİTARİH(SERİTARİH(E5;-24);12))
Kod:
=ÇOKEĞERORTALAMA(B2:B222;A2:A222;">"&SERİTARİH(SERİTARİH(E5;-24+1);11);A2:A222;"<="&E5)
Bu şekilde revize edin.
 

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
669
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
Teşekkür ederim. tamamdır.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,632
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

2 sonuç için aşağıdaki formülü ,tek olarak kullanabilirsiniz. Aşağıya doğru kopyalayınız.

Kod:
=ORTALAMA(KAYDIR(DOLAYLI("A"&KAÇINCI($E$9;$A$1:$A$300;0));-23+(SATIR(A1)-1)*12;1;12;))
 

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,677
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba,

2 sonuç için aşağıdaki formülü ,tek olarak kullanabilirsiniz. Aşağıya doğru kopyalayınız.

Kod:
=ORTALAMA(KAYDIR(DOLAYLI("A"&KAÇINCI($E$9;$A$1:$A$300;0));-23+(SATIR(A1)-1)*12;1;12;))
Bazen bu Excel'e ayar oluyorum.
Kendi yaptığımı iyi sanıyorum sonra bir başka çözüm hayallerimi yıkıyor. :)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu ve benzeri forumlarda çok farklı bakış açıları olan cevherler var. Kıymetlerini bilmek gerekir.

Ellerinize ve aklınıza sağlık..
 
Üst