Vba ile Sayfalar arası toplama, çıkarma ve bölme işlemini birlikte yapma

Katılım
3 Mart 2014
Mesajlar
6
Excel Vers. ve Dili
2007 - 2013
İyi günler arkadaşlar.
Bir konuda yardımınıza ihtiyacım var.
1 - Sayfa1'de "F4" hücresinden başlayıp "J" Sütununun son dolu hücresine kadar olan hücreleri satır satır toplayacak
2 - Sayfa2'deki "F4" hücresinden başlayıp "J" Sütununun son dolu hücresine kadar olan hücreleri satır satır toplayacak
3 - Sayfa2'deki toplanan her satır sayfa1'de toplanan satırdan çıkarılacak (Örneğin "Sayfa1 4. satır" eksi ( - ) "sayfa 2 4. satır",Sayfa1 5. satır" eksi ( - ) "sayfa 2 5. satır" diye)
4 - çıkarma işleminin sonucu 5'e bölünerek sayfa 3'teki "F4:J" hücrelerine tam sayı olarak dağıtılacak ( bölme sonucu virgüllü olmaması gerek)

Konuyla ilgili yardımcı olursanız sevinirim. VBA hakkında bilgim yok ama deneme yanılma yaparak kodları az çok düzenleyebiliyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
"1 - Sayfa1'de "F4" hücresinden başlayıp "J" Sütununun son dolu hücresine kadar olan hücreleri satır satır toplayacak "

Nereye toplayacak? F4:J4, F5:J5 gibi aralıkları mı toplayacak?

"2 - Sayfa2'deki "F4" hücresinden başlayıp "J" Sütununun son dolu hücresine kadar olan hücreleri satır satır toplayacak "

Aynı şekilde nereye ve hangi aralığı toplayacak?

"3 - Sayfa2'deki toplanan her satır sayfa1'de toplanan satırdan çıkarılacak (Örneğin "Sayfa1 4. satır" eksi ( - ) "sayfa 2 4. satır",Sayfa1 5. satır" eksi ( - ) "sayfa 2 5. satır" diye) "

Bu işlem nerede yapılıp, sonucu nereye yazılacak?

"4 - çıkarma işleminin sonucu 5'e bölünerek sayfa 3'teki "F4:J" hücrelerine tam sayı olarak dağıtılacak ( bölme sonucu virgüllü olmaması gerek)"
Bölme sonucu virgüllü yani ondalık ise ne olacak? Aşağı mı yukarı mı yuvarlanacak? Dağıtım sonucu dağıtılanların toplamı ilk bulunan sonuca eşit mi olacak, az ya da fazla olabilir mi?

Mümkünse örnek dosya paylaşarak açıklarsanız iyi olur.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları kullanabilirsiniz. Kodları Sayfa3'ün sekmesine sağ tıklayıp kod görüntüle deyince açılan sayfaya yapıştırın:

PHP:
Private Sub CommandButton1_Click()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3")
Dim sonuc As Range

son1 = s1.Cells(Rows.Count, "D").End(3).Row
son2 = s2.Cells(Rows.Count, "D").End(3).Row
son3 = s3.Cells(Rows.Count, "E").End(3).Row

son = WorksheetFunction.Max(son1, son2, son3)
    For i = 5 To son1
        top1 = WorksheetFunction.Sum(s1.Range("F" & i & ":J" & i))
        top2 = WorksheetFunction.Sum(s2.Range("F" & i & ":J" & i))
        fark = top1 - top2
        pay = Round(fark / 5, 0)
        For Each sonuc In s3.Range("H" & i + 1 & ":L" & i + 1)
            sonuc = pay
        Next
    Next

End Sub
 
Katılım
3 Mart 2014
Mesajlar
6
Excel Vers. ve Dili
2007 - 2013
Aşağıdaki kodları kullanabilirsiniz. Kodları Sayfa3'ün sekmesine sağ tıklayıp kod görüntüle deyince açılan sayfaya yapıştırın:

Sayın YUSUF44 yardımlarınız için teşekkür ederim. Kod çalışıyor ancak; fark 11, 12, 13, 14, 15 olduğunda bölmeden sonra hücrelere hep 3 yazdırıyor. Oysa ki fark 11 olduğunda 3-2-2-2-2 şeklinde yazması gerekir. Bu şekilde yazmasını sağlayabilir miyiz?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İlk mesajımda bu durumda ne olması gerektiğini, dağıtımın kuralını açıklamanızı istemiştim ama dikkat etmediniz sanırım.

Bilgisayar açtığımda yapmaya çalışırım.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları dener misiniz? bu arada sayfalarınızda veriler aynı yerlerde değil, kodları dosyanızın mevcut durumuna göre yaptım:

PHP:
Private Sub CommandButton1_Click()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Set s3 = Sheets("Sayfa3")
Dim sonuc As Range

son1 = s1.Cells(Rows.Count, "D").End(3).Row
son2 = s2.Cells(Rows.Count, "D").End(3).Row
son3 = s3.Cells(Rows.Count, "E").End(3).Row

son = WorksheetFunction.Max(son1, son2, son3)
    For i = 5 To son
        top1 = WorksheetFunction.Sum(s1.Range("F" & i & ":J" & i))
        top2 = WorksheetFunction.Sum(s2.Range("G" & i & ":K" & i))
        fark = top1 - top2
        pay = Round(fark / 5, 0)
        For Each sonuc In s3.Range("I" & i + 1 & ":L" & i + 1)
            sonuc = pay
        Next
        s3.Cells(i + 1, "H") = fark - WorksheetFunction.Sum(s3.Range("I" & i + 1 & ":L" & i + 1))
    Next
End Sub
 
Katılım
3 Mart 2014
Mesajlar
6
Excel Vers. ve Dili
2007 - 2013
Hocam bilgileriniz ve yardımlarınız için teşekkür ederim. Ben gerçek dosyayı düzenleyip öyle yükleyeyim. ona göre daha sağlıklı bir şekilde yardımcı olabilirsiniz.
 
Katılım
12 Eylül 2021
Mesajlar
45
Excel Vers. ve Dili
Microsoft Office 2016 Türkçe
Altın Üyelik Bitiş Tarihi
01-03-2024
acaba sayfa envanterde E satırlarındaki malzeme adını F satırındaki malzeme miktarını userform1 texbox alıyorum aldığım miktarı çıkış yapılacak miktara göre çıkış sayfasına O satırına malzemeyi düşe bilirmiyim
 
Üst