• DİKKAT

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

Seçili döneme göre ortalama hesaplama

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
821
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021
İngilizce
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

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:
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
 
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.
 
Ben olsam sayın @faye_efsane çözümünü kullanırdım.
İyi çalışmalar.
 
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

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.
 
Teşekkür ederim. tamamdır.
 
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;))
 
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. :)
 
Bu ve benzeri forumlarda çok farklı bakış açıları olan cevherler var. Kıymetlerini bilmek gerekir.

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