Yüzdelik Döngü Oluşturmak mümkün mü ?

Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Selam ,
Başlıkta yazdığım mantıkta bir döngüyü aşağıdaki açıklamaya göre elde etmek mümkün müdür?

2 sayımız var.
A ve B diyelim A Büyük olan B küçük olan sayı.

A'dan kademeli olarak % düşeceğiz yani diyelim ki %2.
Bunu düştükten sonra çıkan sayıdan yine %2 düşecek ta ki B sayısına ulaşana kadar. ( 100'den %2 düştük 98 , 98'den %2 düş.... şeklinde devam ediyor.)

Düşülecek yüzde değeri için için aralık tanımı yapılacak, örneğin 0,5 ile 2 aralığındaki sayılar için deneme yapılacak. Bu aralık sayfada hücrelere tanımlanmalı , A1'de 0,5 olsun B1'de 2 , bu iki değer arasını bu şekilde tanımlayalım.( virgül sonrası 2 hane kullanmalı )

Eğer "tam değer ile" B'ye ulaşılıyorsa , aralıktaki hangi sayı sağlamışsa onu msgbox olarak yada başka bir şekilde göstermeli.

Eğer tam değere ulaşılmıyorsa en yakınına ulaşan "sayı yada sayılar" yine msgbox yada başka bir şekilde verilmeli.

Bu düşülen yüzde , aynı mantıkta küçük olan sayıdan büyük olana ulaşma mantığı ile de ikinci bir çalışma gerekiyor.

İlgilenen arkadaşlara şimdiden teşekkürler.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba barış.
Forum kurallarını okumanız, forumdan çok daha azami istifade etmenizi sağlayacaktır.
Mesela bu soru için bir örnek dosya hazırlamanız cevap bulmanızı sağlar.
Kolay gelsin.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Kuralları tabi ki okudum. Okumadığım fikrine nereden ulaştınız onu çözemedim.
Dosya ekleme kurallarını da okudum.
Eğer gerekli üyelik şartlarını sağlamadan soru sorma hakkı yoksa bunu yazılı kurallarda da belirtmenizi istememiz gerekecek.
Merhaba barış.
Forum kurallarını okumanız, forumdan çok daha azami istifade etmenizi sağlayacaktır.
Mesela bu soru için bir örnek dosya hazırlamanız cevap bulmanızı sağlar.
Kolay gelsin.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Kuralları ben yazmıyorum. Ben de sadece bir üyeyim. Değerli insanların sorularına hiçbir karşılık beklemeden cevap vererek yardımcı olmaya çalışıyorum.
Sizi de yardıma değer bulup sorunuzu yanıtlamak istedim, bunun için yardımcı olmak adına yapmanız gerekenleri tavsiye ettim.
Söylediklerimin tamamını size yardımcı olmak adına söyledim.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Muzaffer bey , yazdıklarınızı okudum , ilginiz için de teşekkür ederim.
Neden dosya ekleyerek çözüm isteyemediğimi ben de açıklamak zorundayım , sizin de talebiniz doğrultusunda bunu yazmam kadar doğal bir şey olamaz siz de düşünürseniz.
Kuralları siz yazmıyor olabilirsiniz ama okumadığımı iddia eden sizsiniz.
Bende konuya açıklık getirdim.
Yani sorunuza nazikçe cevap verdim , sizin de gözünüzden açmış olabilir , normal olarak.
Altın üye değilim , şimdilik...
Kuralları ben yazmıyorum. Ben de sadece bir üyeyim. Değerli insanların sorularına hiçbir karşılık beklemeden cevap vererek yardımcı olmaya çalışıyorum.
Sizi de yardıma değer bulup sorunuzu yanıtlamak istedim, bunun için yardımcı olmak adına yapmanız gerekenleri tavsiye ettim.
Söylediklerimin tamamını size yardımcı olmak adına söyledim.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
"Soru sormak için, dosya eklemelisiniz, dosya eklemek için Altın üye olmalısınız."
Bunu mu demek istediğimi zannettiniz?

Dosya eklemek için altın üye olmanız gerekmiyor.
Herhangi bir paylaşım sitesine dosyanızı ekleyip linkini burada paylaşabilirsiniz.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
İncelediğim birçok konu altın üye sistemine dahil kullanıcıların paylaştığı dosyalar , kimisi de direkt işin içinden çıkamadığı kodu paylaşmış.
İnanın link hiç görmedim.
Olabilir tabi neden olmasın , fakat link üzerinden indirme konusunda arkadaşlar çekimser kalabilir diye düşünüyorum.
Yani daha fazla konuyu derinleştirmeden sizin ne demek istediğimi anladığınızı düşünüyorum.

"Soru sormak için, dosya eklemelisiniz, dosya eklemek için Altın üye olmalısınız."
Bunu mu demek istediğimi zannettiniz?

Dosya eklemek için altın üye olmanız gerekmiyor.
Herhangi bir paylaşım sitesine dosyanızı ekleyip linkini burada paylaşabilirsiniz.
 

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
@barışD34 ;

A1 hücresinde 2 ve B1 hücresinde 0,5 değerleri varken, elde ettiğim sonuç: 0,5061

C#:
Sub Test()
    Dim Val1 As Double, Val2 As Double, perc As Double, temp As Double
    
    Val1 = Range("A1") ' Hucre degeri "2"
    Val2 = Range("B1") ' Hucre degeri "0,5"
    perc = 0.02
    
    temp = Val1 - perc * Val1
    
    Do
        temp = temp - temp * perc
        If temp < Val2 Then
            temp = temp + temp * perc
            Exit Do
        End If
    Loop Until (temp - Val2) <= 0.001 ' Burasi hassaslik icin. Istege gore 0.001 degeri degistirilebilir.
    
    MsgBox Format(temp, "0.0000")
End Sub

.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Haluk Bey öncelikle ilginiz için çok teşekkürler.
Dosya yükleyemedim , onun yerine basit bir şekilde örnek hazırlayıp ekran resmi üzerinde açıklamalarla yardımcı olacağını düşündüm.
Birkaç değişiklik ile yardımcı olabileceğiniz düşünüyorum. Fakat ;
Bu konuda bir çözüm olur mu , kod ile çözüme ulaşılabilir mi bilgim yok , bu nedenle tezat bir istekte bulunuyorsam kimsenin vaktini almak istemem , böyle bir durum var ise belirtirseniz çok memnun olurum.


@barışD34 ;

A1 hücresinde 2 ve B1 hücresinde 0,5 değerleri varken, elde ettiğim sonuç: 0,5061

C#:
Sub Test()
    Dim Val1 As Double, Val2 As Double, perc As Double, temp As Double
   
    Val1 = Range("A1") ' Hucre degeri "2"
    Val2 = Range("B1") ' Hucre degeri "0,5"
    perc = 0.02
   
    temp = Val1 - perc * Val1
   
    Do
        temp = temp - temp * perc
        If temp < Val2 Then
            temp = temp + temp * perc
            Exit Do
        End If
    Loop Until (temp - Val2) <= 0.001 ' Burasi hassaslik icin. Istege gore 0.001 degeri degistirilebilir.
   
    MsgBox Format(temp, "0.0000")
End Sub

.
 

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
Ben konuyu tam anlamadım galiba.....

Yukarıda önerdiğim kodu kullandığımda (A1 = 102 ve B1 = 65,84) %2 'lik düşüşlerle sonuç 66,7074 çıkıyor.

Çünkü; eğer bir iterasyon daha yapılırsa, 66,7074 - 66,7074*2% = 65,3733 elde edilir ama 65,3733 < 65,84 olduğu için şartı sağlamaz.

Bu nedenle, sonuç 66,7074 ....

Siz başka bir sonuç bekliyorsanız, açıklayın lütfen....

.
 

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
Anladığım kadarıyla, benim anlattığımdan çok farklı bir şey istemiyorsunuz.....

Örnek dosya aşağıdaki linktedir.







.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Evet şimdi bu şekilde Ana değer ve sonuçta ulaşılması gerek değer tanımladınız.
Bunu örnek kodunuzda göremedim o nedenle anlayamadım.
Anladığım kadarıyla, benim anlattığımdan çok farklı bir şey istemiyorsunuz.....

Örnek dosya aşağıdaki linktedir.







.
Sanırım B3 döngü yüzdesinde en yakın olan değeri veriyor.
Aynen bu şekilde aralığı tanımlarsak kod tamamlanmış olacak .
Yani başka 2 hücreye 0,5 ile 2 aralığından değişkenleri seç şeklinde.
Haluk Bey E-Tablolardan kodu almayı bilmiyorum , buradan paylaşabilir misiniz.
 

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
Linki tıkladığınızda Google Sheets'de dosya açılır.

Sonra, menü çubuğundan File >> Download >> Microsoft Excel (.xlsm) tıklayın, bilgisayarınıza indirin. (Dosya >> İndir >> Microsoft Excel (.xlsm) )

.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Teşekkürler dosyayı indirdim.
Haluk bey şöyle bir farklılık var.
B3 hücresini biz tanımlamıyoruz.
B3'de varsayılan değeri kendisi getirmeli.

Biz büyük sayı , ulaşılması gereken sayı ve bunların yanında aralık vermemiz gerek.
Büyük ve ulaşılması gereken sayı B1 ve B2 de tanımlanmış. Buraya kadar sorun yok.
Şİmdi D1=0,5 E1=2 yazalım.
Bu kısım aralık . B3'de yazan değer yani getirilmesi gerek değer x olsun. Bu aralıktan getirilecek.

0,5<=x<=2 olacaktır.

İşte bu D1 ve E1 aralığından tarama yaparak , hangi değer en yakınsa onun getirilmesi gerek , yani onu biz tayin etmemeliyiz.
Sadece aralık belirtmeliyiz.

Linki tıkladığınızda Google Sheets'de dosya açılır.

Sonra, menü çubuğundan File >> Download >> Microsoft Excel (.xlsm) tıklayın, bilgisayarınıza indirin. (Dosya >> İndir >> Microsoft Excel (.xlsm) )

.
 

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
İş iyice çetrefilliymiş.....

Anladığım kadarıyla ekli dosyayı incelersiniz.

Bu kez kodda yapılan iş; yüzdelik değer alt sınırı 0.1 arttırımlarla yüzdelik değer üst sınırına kadar elde edilen muhtelif yüzdelik değerlerle daha önceki kodda yer alan çalışmanın benzerini yapacak, kullanılan yüzdelik değeri ve elde edilen sonuçların hepsini sayfaya yazacak ve ekrana MsgBox fonksiyonuyla sizin aradığınız yüzdelik değeri ve sonucu getirecek.

Benden bu kadar .... siz inceleyip, haber verirsiniz.

Dosyanın linki;



Video :



.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Yani Haluk bey çok teşekkür ederim , sizin de gördüğünüz üzere denemeyle zaman alacak bir yapıydı.
Birçok konuyu çözüme ulaştırdığınız gördüm forumda , yani ilgilendiğiniz görünce sonuç geleceğinden emindim aslında .
Ne desem bilemedim teşekkür etmek bir yana.

Yalnız güzel bir durum da oldu bir ricam olacak. Bazen çalışma aşamasında ana hedef dışında güzel yan ürünler çıkar hani :)

İlk paylaştığınız dosya yani test99 dosyası başka bir çalışmamda çok işime yarayacak ama ufak bir düzen değişikliği gerekli.
Dosya aynı kalsın yani tüm hücre değişken değerleri , bu şekilde kullanalım , sadece şu var:

B3'de değer yüzde olarak verilmiş 1,2% olarak işliyor ve aşağı iniyor.

Şİmdi 102'den 1,2 düştüğümüzde % olarak 100,776 , 100,776 'dan da 1,2 düştüğümüzde 99,56669 ve böyle gitmeli , B2'den küçük yada eşit olana kadar.

Paylaştığınız dosyada 1,2% olduğu için oran farklı ilerliyor doğal olarak.

Ben hücreyi sayı biçimlendirmesine çevirip 1,2 yazdım , olmadı haliyle.
Bu şekilde yapabilir miyiz?

B2'deki sayıdan küçük yada eşit olana kadar devam edip hesaplamayı durdursun.


İş iyice çetrefilliymiş.....

Anladığım kadarıyla ekli dosyayı incelersiniz.

Bu kez kodda yapılan iş; yüzdelik değer alt sınırı 0.1 arttırımlarla yüzdelik değer üst sınırına kadar elde edilen muhtelif yüzdelik değerlerle daha önceki kodda yer alan çalışmanın benzerini yapacak, kullanılan yüzdelik değeri ve elde edilen sonuçların hepsini sayfaya yazacak ve ekrana MsgBox fonksiyonuyla sizin aradığınız yüzdelik değeri ve sonucu getirecek.

Benden bu kadar .... siz inceleyip, haber verirsiniz.

Dosyanın linki;



Video :



.
 

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
Biraz erken sevinmenize neden oldum.......... istenilen sonuç elde edilemiyor sanırım, kodu revize etmek lazım.

Gün içerisinde meşgulum, daha sonra bir ara bakarım....

.
 

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
Bu arada, bir revizyon yaptım.... incelersiniz....

Yüzdelik değerin arttırımında kullanılan değeri de sayfada B5 hücresinden alarak tüm parametrelerin sayfadaki hücrelerden alınması sağlandı.







.
 
Katılım
20 Eylül 2022
Mesajlar
72
Excel Vers. ve Dili
2021 TR
Emeğinize sağlık evet sanırım daha doğru bir işlem oldu. Yalnız Haluk bey şöyle bir durum var onu karşılaştıramıyorum.
Örneğin 100'den %17 düştüğümüzde 93 ... 93den bir 17 daha düşersek 77,19 , yüzde düşüm tabi.
Bizdeki dosyada bu şekilde tanımlı değil , değiştirmeye çalışsam da olmuyor .
Böyle olunca bazı noktalarda sapma oluyor rakamlarda.
Bu kısmı çözersek sanırım bendeki eski el usulü hesaplanan rakamlarla da uyuşma sağlayacak, yani geri test ettim tamamlanmış verilerle , b u nedenden dolayı sanırım sapma meydana geliyor.

Yukarıda verdiğim yüzde düşüm örneğindeki gibi bir adımlama sağlarsak sanırım son nokta olacak.


Bu arada, bir revizyon yaptım.... incelersiniz....

Yüzdelik değerin arttırımında kullanılan değeri de sayfada B5 hücresinden alarak tüm parametrelerin sayfadaki hücrelerden alınması sağlandı.







.
 

Korhan Ayhan

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

İlk mesajınızda "örneğin 0,5 ile 2 aralığındaki sayılar için deneme yapılacak" olarak yazdığınız ifadede öncelikle 0,5 denendikten sonra hangi sayı denenecek?

Yani % aralık arasındaki artış değer katsayısı nedir?
 
Üst