• DİKKAT

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

makro dizi ile hücreleri karşılaştırıp işlem yapma

Katılım
26 Şubat 2011
Mesajlar
9
Excel Vers. ve Dili
ms 2003
merhaba benim bir ödevim var acil yardımcı olurmusunuz?
soru: a1:a10, b1:b10 iki hücre aralığım a1 ile b1 karşılaştırılıp a1>=b1 ise a1-b1 olacak a1-b1 değer b2 hücresiyle karşılaştırılacak a1-b1>= b2 ise a1-b1-b2 yapılacak bu işlem hücrelerdeki sayılar bitene kadar yapılacak eğer a1-b1-...bn < bn+1 ozamanda a1-b1-bn+a2 olacak bu işlemler böyle devam edecek ve her çıkarma işlemi başka bir hücreye sırayla yazılacak yazılırken a1-b1+a2 yapılan işlemler varsa bu işlemler için 0 yazılacak.
umarım anlatabilmişimdir.
 
merhaba benim bir ödevim var acil yardımcı olurmusunuz?
soru: a1:a10, b1:b10 iki hücre aralığım a1 ile b1 karşılaştırılıp a1>=b1 ise a1-b1 olacak a1-b1 değer b2 hücresiyle karşılaştırılacak a1-b1>= b2 ise a1-b1-b2 yapılacak bu işlem hücrelerdeki sayılar bitene kadar yapılacak eğer a1-b1-...bn < bn+1 ozamanda a1-b1-bn+a2 olacak bu işlemler böyle devam edecek ve her çıkarma işlemi başka bir hücreye sırayla yazılacak yazılırken a1-b1+a2 yapılan işlemler varsa bu işlemler için 0 yazılacak.
umarım anlatabilmişimdir.
 
Selamlar,

Lütfen mesajlarınızı alakasız konular altına yazmayınız. Bu seferlik yeni başlık açarak mesajlarınızı taşıdım.
 
Sub tgb()

Dim deg1, deg2, deg3 As Variant
Dim snc, snc2 As Double

Dim sifir As Integer

Dim r, n, j As Integer
sifir = 0
n = 10

For r = 2 To n - 1
deg1 = Range("a" & r).Value
deg2 = Range("b" & r).Value

If deg1 >= deg2 Then
snc = deg1 - deg2
Range("f" & r).Value = snc
End If

For j = r + 1 To n
deg2 = Range("b" & j).Value
If snc >= deg2 Then
snc = snc - deg2
Range("f" & j).Value = snc

deg1 = Range("a" & j).Value

Else: Range("f" & j).Value = sifir

snc = snc + deg1
Range("e" & j).Value = snc
End If

Next j
Next r

End Sub

n sayısı 5 iken doğru çalıştı ama n sayısını büyütükçe sıfır yazan değer artıyor
 
Selamlar,

Örnek dosya ekleyerek yapmak istediğiniz işlemi açıklarmısınız.
 
ekli dosyada iki sütundaki değerleri karşılatırıp bir başka sutuna değer yazdırıyorum yukardaki mesajımda yazdığım gibi aslında makromda ekli dosyada mevcut

a1:an, b1:bn iki hücre aralığım a1 ile b1 karşılaştırılıp a1>=b1 ise a1-b1 olacak a1-b1 değer b2 hücresiyle karşılaştırılacak a1-b1>= b2 ise a1-b1-b2 yapılacak bu işlem hücrelerdeki sayılar bitene kadar yapılacak eğer a1-b1-...bn < bn+1 ozamanda a1-b1-bn+a2 olacak bu işlemler böyle devam edecek ve her çıkarma işlemi başka bir hücreye sırayla yazılacak yazılırken a1-b1+a2 yapılan işlemler varsa bu işlemler için 0 yazılacak.

ama makromda 0 yazılan hücre döngü değerim artınca sıfır yerine hücre toplamlarını yazıyor.
 

Ekli dosyalar

Selamlar,

Dosyanızı inceledim fakat mantığını tam olarak anlayamadım. Oluşturduğunuz makro tüm satırları döngüye alıyor. İlk olarak A1-B1 hücrelerini alttaki tüm satırlar ile işleme sokup sonuçları E-F sütunlarına listeliyor. Daha sonra A2-B2 hücrelerini alttaki tüm satırlar ile işleme sokup sonuçları daha önce E-F sütununa yazdığı sonuçların üzerine yazıyor.

Fakat burada ulaşılmak istenilen sonucu tam olarak kavrayamadım. Biraz daha detay verirseniz sonuca gitmemiz kolaylaşacaktır.
 
50 20
10 15
40 70
60 5
burada 50-20=30
30 alıp 15 ile karşılaştıracak 30-15= 15 yazacak
15 alıp 70 karşılaştıracak 15<70 olduğu için 15+10=25 yapacak
20 alıp 5 ile karşılaştıracak 20-5=15 yazacak

sonuç olarak 30
15
0
15
olmasını istiyorum fakat 0 yazılacak hücre dögü sayısı arttığında 0 yerine başka şeyler yazıyor. içerdeki döngünde hata var ama bulamadım işte
 
Selamlar,

Ekteki örnek dosyaya göre E-F sütunlarında görmek istediğiniz sonuçları dosyada belirtip foruma eklermisiniz.
 

Ekli dosyalar

pardon bu dosya yalnış oldu
 

Ekli dosyalar

Son düzenleme:
Selamlar,

Son dosyanızı incelerken kendimce aşağıdaki kodu tasarladım. Fakat son değer olarak 75 değilde 80 değerine ulaşıyorum. Sanırım hesaplama adımlarında atladığım bir nokta var. Dosyanızdaki hesaplama adımlarını açıklarsanız bu noktayıda çözüme kavuşturabiliriz.

Ayrıca #8 nolu mesajınızda yaptığınız açıklamada kırmızı ile belirttiğim bölümlerde bir tutarsızlık yokmu sizce?

50 20
10 15
40 70
60 5
burada 50-20=30
30 alıp 15 ile karşılaştıracak 30-15= 15 yazacak
15 alıp 70 karşılaştıracak 15<70 olduğu için 15+10=25 yapacak
20 alıp 5 ile karşılaştıracak 20-5=15 yazacak


Hazırladığım kod;

Kod:
Option Explicit
 
Sub KARŞILAŞTIRMA()
    Dim X As Long, Y As Long, Veri As Double
    
    For X = 1 To Range("A65536").End(3).Row
        If Cells(X, "A") >= Cells(X, "B") Then
            Cells(X, "C") = 0
            Cells(X, "D") = Cells(X, "A") - Cells(X, "B")
            Veri = Cells(X, "A") - Cells(X, "B")
        Else
            Cells(X, "C") = Cells(X, "B")
            Cells(X, "D") = 0
            Veri = Cells(X, "B")
        End If
    
        For Y = X + 1 To Range("A65536").End(3).Row
            If Veri >= Cells(Y, "B") Then
                Cells(Y, "C") = 0
                Cells(Y, "D") = Veri - Cells(Y, "B")
                Veri = Veri - Cells(Y, "B")
            Else
                Cells(Y, "C") = Veri + Cells(Y, "A")
                Cells(Y, "D") = 0
                Veri = Cells(Y, "C")
            End If
        Next
        Exit For
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
merhaba,

örnek dosyayı ekledim
 

Ekli dosyalar

Geri
Üst