Fiyat değişimi yanlış hesaplama

Katılım
16 Haziran 2022
Mesajlar
7
Excel Vers. ve Dili
Microsoft Office Profesional Plus 2016-
Merhaba, motorin fiyat değişmi dosyamda üç ayrı bölgenin verisini tarih, fiyat ve fiyat değişimi olarak giriyorum.
Kod:
=EĞER(AR10="";0;(AR10-AQ10)/AQ10)
İlk bölge (üçüncü bölgeninde dizaynı bu şekilde o yüzden eklemedim)
kullandığım formül bu. %5 ve üzeriyse değişim oranını turuncuya boyuyor. altındaysa renksiz bırakıyor önemsemiyoruz.

Bu üç farklı bölgenin ikisinde formül mantığı aynı. Diğerindeyse farklı yazılmış (hücre koruma). Aslında üçününde aynı olması gerekiyor.

Örnek: Şimdi elimdeki güncel fiyat değişimi %5'in altında. Yarın yeni bir fiyat güncellemesi gelecek. O geldiğinde formülün hemen önce olan %5 altındaki değerle değil, en yakın %5 üstü ilk değerle hesaplaması gerekli.

Kod:
=EĞER(AQ21="";0;(AQ21-$AO$21)/$AO$21)
(ikinci bölge)
Burada hemen bir öncekini alması gerekirken 2 önceki tarihi alıyor. Kafamdan 3 yeni tarih girdim, yok.
Formül 2 hazirandaki fiyata sabitlenmiş bırakmıyor. Elle yazınca düzeltiyorum ama yeni bir değer girince yine 2 hazirandan alıyor...

1. resim

2. resim

3. resim
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Ekran görüntüsü yerine excel dosyası paylaşmanızı tavsiye ederim. Hem sorunun ne olduğunu anlayabiliriz hem de aynı dosyayı oluşturmak için vakit harcamayız.
 
Katılım
16 Haziran 2022
Mesajlar
7
Excel Vers. ve Dili
Microsoft Office Profesional Plus 2016-
Ekran görüntüsü yerine excel dosyası paylaşmanızı tavsiye ederim. Hem sorunun ne olduğunu anlayabiliriz hem de aynı dosyayı oluşturmak için vakit harcamayız.
Maalesef iş dosyası olduğu için yüklemekte sorun yaşıyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İmzamda belirttiğim gibi harici sitelere yükleyip linkini paylaşabilirsiniz.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İlk mesajınızda anlattıklarınızdan maalesef bir şey anlamadım. Dosya üzerinde "şu hücrede şöyle bir işlem istiyorum" şeklinde somut örnek verebilir misiniz?
 
Katılım
16 Haziran 2022
Mesajlar
7
Excel Vers. ve Dili
Microsoft Office Profesional Plus 2016-
İlk olarak AQ22 Hücresi yanlış hesap yapıyor. Doğru hesaplamanın AQ29 VE AQ30 üzerinden olmasına ihtiyacım var. Ben bu hatayı manuel olarak düzeltiyorum ancak deneme amaçlı yeni bir gün üzerinden değer girdiğimde yine AO21 hücresi üzerinden hesaplamaya çalışıyor.
İlk sorunum bu.

İkincisi ise yine hücre üzerinden söyleyeyim: AS11 hücresi hesabında AR11 değil AQ10 fiyatını alması gerek. Fakat almıyor. Çünkü ilk mesajımda da belirttiğim gibi bir önceki değişim %3,33 yani %5 altında olduğu için onun üzerinden hesap yapmaması gerek.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İlk olarak AQ22 Hücresi yanlış hesap yapıyor. Doğru hesaplamanın AQ29 VE AQ30 üzerinden olmasına ihtiyacım var. Ben bu hatayı manuel olarak düzeltiyorum ancak deneme amaçlı yeni bir gün üzerinden değer girdiğimde yine AO21 hücresi üzerinden hesaplamaya çalışıyor.
Bir yanlışlık var sanıyorum çünkü örnek dosyanızda AQ29 ve AQ30 hücreleri boş.

İkincisi ise yine hücre üzerinden söyleyeyim: AS11 hücresi hesabında AR11 değil AQ10 fiyatını alması gerek. Fakat almıyor. Çünkü ilk mesajımda da belirttiğim gibi bir önceki değişim %3,33 yani %5 altında olduğu için onun üzerinden hesap yapmaması gerek.
Örnek dosyanızda AS11 hücresinde AR11 hücresinden veri alınmıyor, AS10 ve AR10 hücrelerinden alınıyor.
 
Katılım
16 Haziran 2022
Mesajlar
7
Excel Vers. ve Dili
Microsoft Office Profesional Plus 2016-
Bir yanlışlık var sanıyorum çünkü örnek dosyanızda AQ29 ve AQ30 hücreleri boş.

Örnek dosyanızda AS11 hücresinde AR11 hücresinden veri alınmıyor, AS10 ve AR10 hücrelerinden alınıyor.
Kusura bakmayın hocam dikkatsizliğime verin. Düzeltilmiş hali şöyle olacak ;

AO21 ve AQ21 arasında olan işlemin AP21 ile AQ21 arasında olması gerekiyor.

ve

AR10 ve AS10 değil AQ10 ve AS10 arasında olması gerekiyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Excel formülleriyle nasıl olur bilemedim. Bu nedenle kullanıcı tanımlı fonksiyon hazırladım. Aşağıdaki kodları excelde vba bölümünde bir modül ekleyin ve bu modüle yapıştırın. Sayfada sonuç görmek istediğiniz hücrede (örneğin AQ22 hücresinde) aşağıdaki gibi kullanabilirsiniz:

=mazot(AQ21)

Kodlar:

PHP:
Function mazot(fiyat As Range)
sat = fiyat.Row + 1
sut = fiyat.Column
For i = sut - 1 To 1 Step -1
    If Cells(sat, i) >= 0.05 Then
        ara = (fiyat.Value - Cells(sat - 1, i)) / Cells(sat - 1, i)
        GoTo 10
    End If
Next
10:
mazot = ara
End Function
Bu fonksiyon tamamen örnek dosya yapınıza göre hazırlanmıştır. Başka dosyalarda istediğiniz sonucu vermeyebilir.
 
Katılım
16 Haziran 2022
Mesajlar
7
Excel Vers. ve Dili
Microsoft Office Profesional Plus 2016-
Emeğiniz için çok teşekkür ederim. Fakat bana formül üzerinden bir düzeltme veya -artık bu soruna yol açan her neyse- o ayarda bir düzeltme gerekiyor maalesef. Sürekli kullanacağım için makro olayı beni aşıyor :)
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu dosya ya da bu yapıdaki başka dosya üzerinde sürekli kullanmanıza engel yok. Verdiğim makro belirlediğiniz hücrenin alt satırını geriye doğru kontrol ediyor, %5 ve üstü olan ilk hücreyi dikkate alarak belirttiğiniz hesaplamayı yapıyor.

Makro olayını da gözünüzde çok büyütmeyin, biraz gayretle kendi ihtiyacınız olan makroları oluşturabilirsiniz. Öğrenmek zor değil.
 
Katılım
16 Haziran 2022
Mesajlar
7
Excel Vers. ve Dili
Microsoft Office Profesional Plus 2016-
Vba'dan ilgili dosyayı seçerek insert>module yaptım.Kodu yazdıktan sonra kaydettim. Daha sonra dosya içinde neyi nasıl uygulayacağıma dair hiçbi fikrim yok. Onuda bir şekilde kurcalayarak öğreneceğiz o halde :)
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Vba'dan ilgili dosyayı seçerek insert>module yaptım.Kodu yazdıktan sonra kaydettim. Daha sonra dosya içinde neyi nasıl uygulayacağıma dair hiçbi fikrim yok. Onuda bir şekilde kurcalayarak öğreneceğiz o halde :)
Onu ben anlatmıştım yukarda:

Excel formülleriyle nasıl olur bilemedim. Bu nedenle kullanıcı tanımlı fonksiyon hazırladım. Aşağıdaki kodları excelde vba bölümünde bir modül ekleyin ve bu modüle yapıştırın. Sayfada sonuç görmek istediğiniz hücrede (örneğin AQ22 hücresinde) aşağıdaki gibi kullanabilirsiniz:

=mazot(AQ21)


Kodlar:

PHP:
Function mazot(fiyat As Range)
sat = fiyat.Row + 1
sut = fiyat.Column
For i = sut - 1 To 1 Step -1
    If Cells(sat, i) >= 0.05 Then
        ara = (fiyat.Value - Cells(sat - 1, i)) / Cells(sat - 1, i)
        GoTo 10
    End If
Next
10:
mazot = ara
End Function
Bu fonksiyon tamamen örnek dosya yapınıza göre hazırlanmıştır. Başka dosyalarda istediğiniz sonucu vermeyebilir.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

C11 hücresine uygulayıp sağa doğru sürükleyiniz.

C++:
=IF(C10="";0;(C10/IFERROR(IFERROR(HLOOKUP(LOOKUP(2;1/($B11:B11>=5%);$B$9:B$9);$B$9:B$10;2;0);HLOOKUP(LOOKUP(2;1/($B10:B10>B10);$B$9:B$9);$B$9:B$10;2;0));B10)-1))
Türkçe sürüm kullanıyorsanız formülü linkten çevirip kullanabilirsiniz.

Translator • Excel
 
Üst