Çift döngü

Katılım
17 Aralık 2006
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Merhabalar,
Çift döngülü makro yapmam gerekli fakat sürekli hatalı oluyor yaptığım makrolar...

Yazmak istediğim makro aynı satırda son girilen iki sütundaki sayılar arasında karşılaştırma yapacak. ve sonuç olarak ekrana bir msgBox ile büyük ya da küçük diye gelecek

örneğin a1 ve b1 e sayı girilmiş olsun makro çalıştırıldığında b1 ile a1 i karşılaştıracak ve sonucu belirticek. Fakat c1 girildiğinde ise c1 ile b1 i karşılaştıracak...

Yardımsı olursanız çoook sevinirim...
Bu forumdaki ilk mesajım umarım ben de ilerde sorulara cevap vericek kadar makro öğrenirim...
 

Ali

Özel Üye
Katılım
21 Temmuz 2005
Mesajlar
7,919
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Aşağıdaki kodları deneyin.

Kod:
Sub Sondeğerfarkı()
Dim LastColumn As Long
If Range("A1").End(xlToRight).Value > Range("A1").End(xlToRight).Offset(0, -1).Value Then
MsgBox Range("A1").End(xlToRight).Value - Range("A1").End(xlToRight).Offset(0, -1).Value & " " & ("büyük")
Else
MsgBox Range("A1").End(xlToRight).Value - Range("A1").End(xlToRight).Offset(0, -1).Value & " " & ("küçük")
End If
End Sub

İlk satırda Son değer ve son değerden öncekinin farkını fonksiyonla bulmak isterseniz o zamanda sonucu görmek istediğiniz hücreye;

=ARA(9.99999999999999E+307;İNDİS($1:$1;KAÇINCI(9.99999999999999E+307;$1:$1)))-ARA(9.99999999999999E+307;İNDİS($1:$1;KAÇINCI(9.99999999999999E+307;$1:$1)-1))

yazınız.
 
Son düzenleme:
Katılım
17 Aralık 2006
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Teşekkürler

Çok teşekkür ederim Ali Bey ..
Fakat tam olarak yapamadığım bir şey daha var:
Bu makro tek satır için geçerli olmazsa örneğin a2 den m7 ye kadar geçerli olsun ve hep son girilen 2 değeri karşılaştırsın.

Dİm satir As Integer, sutun As Integer, i As Integer
Dim aranan As String, j As Integer
satir=Selection.Rows.Count
sutun=Selection.Coloumns.Count
For i=1 To sutun
For j=1 To satir
bu makro metnini nasıl sizin yazdığınız makroya monte edebilirim ..
Şimdiden çok teşekkür ederim
Esen kalın
 

Ali

Özel Üye
Katılım
21 Temmuz 2005
Mesajlar
7,919
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
O zaman şu şekilde deneyin.

Kod:
Sub sondegerfarki()
Dim hucre, Sondeger
    For Each hucre In Range("A2:M7").SpecialCells(xlCellTypeConstants)
        Sondeger1 = hucre.Value
        Sondeger2 = hucre.Offset(0, -1).Value
            Next hucre
If Sondeger1 > Sondeger2 Then
MsgBox ("Fark ") & " " & Sondeger1 - Sondeger2 & " " & ("Sondeğer daha büyük")
Else
MsgBox ("Fark ") & " " & Sondeger1 - Sondeger2 & " " & ("Sondeğer bir öncekinden küçük")
End If
End Sub
 
Katılım
17 Aralık 2006
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Ali Bey yardım!

Tekrar Merhaba Ali Bey,
İlk yazdığınız makro ile yapamıyorum bu karşılaştırma işini çünkü karşılaştıracağım satırdaki tüm hücrelerde excel fonksiyonuyla toplama işlemi bulunuyor.. makro o hücrelerdeki değeri sayı olarak görmüyor galiba . Ben de
bu toplama işlemini sizin yazdığınız makroların üzerinde uygulayim dedim fakat bir saate yakın uğraşmama karşın bir türlü olmadı ...
Makro yazma konusunda çok az bir bilgim var ve bu da ödevim benim , öğreneyim diyorum kendi kendime ama dönüp dolaşıp sizin yardımınıza ihtiyacım oluyor...
Umarım yardımcı olabilirsiniz ..
şimdiden teşekkür ederim
 

Ali

Özel Üye
Katılım
21 Temmuz 2005
Mesajlar
7,919
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Sayfaya yazmış olduğunuz Sub yordamı sayfadaki hücrelerin değişmesi ile tetiklenmez yani siz makroyu çalıştırdığınızda çalışır. Eğer hücreye bağımlı yani hücrenin değişmesi ile makronun çalışmasını isterseniz kodlarınız Change olayının içine yazmalısınız.Aşağı kodları Sayfa2 nin içine ekleyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A2:M5]) Is Nothing Then Exit Sub
If Target.Offset(0, -1).Value > Target.Value Then
MsgBox ("Önceki değer küçük")
Else
MsgBox ("Önceki değerden büyük")
End If
End Sub
 
Katılım
17 Aralık 2006
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Son Bir soru

Peki Ali Bey diyelim b2 den m5 e kadar tüm hücrelere değer girilmiş oldupunda ekrana tüm bu hücrelerdeki toplamı getirecek olan bir makro nasıl yazılabilir?
tekrar sağolun
 

Ali

Özel Üye
Katılım
21 Temmuz 2005
Mesajlar
7,919
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Sub topla()
MsgBox WorksheetFunction.Sum(Range("B2:M5"))
End Sub
 
Katılım
17 Aralık 2006
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Teşekkürler
 
Üst