• DİKKAT

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

macro-vba toplama işlemi

  • Konbuyu başlatan Konbuyu başlatan mesuutt
  • Başlangıç tarihi Başlangıç tarihi
Forumda çok kez paylaşıldı. Artık bu tarz basit kurguları yapabiliyor olmanız gerekir.

C++:
Option Explicit

Sub Topla()
    With Range("K1:K37")
        .Formula = "=SUM(A1:J1)"
        .Value = .Value
    End With
    
    With Range("A38:K38")
        .Formula = "=SUM(A1:A37)"
        .Value = .Value
    End With
End Sub
 
Forumda çok kez paylaşıldı. Artık bu tarz basit kurguları yapabiliyor olmanız gerekir.

C++:
Option Explicit

Sub Topla()
    With Range("K1:K37")
        .Formula = "=SUM(A1:J1)"
        .Value = .Value
    End With
   
    With Range("A38:K38")
        .Formula = "=SUM(A1:A37)"
        .Value = .Value
    End With
End Sub
Sy. Korhan Ayhan ;
ilginiz ve yardımınız için teşekkür ederim. şimdiye kadar formda formüller üzerine çalışma yapıyordum makroyu da yeni yeni öğrenmeye başladım. hatta bu Sayfa2 de onu bile beceremedim. Teşekkür ederim.
 
Eğer Range ifadelerinin başında sayfa adı yoksa o anda aktif sayfa hangisi ise kod o sayfa üzerinde işlem yapar.

Sayfa yönlendirmesi yapmak için Range ifadesinin soluna sayfa adını yazmanız gerekir.

Aşağıdaki gibi yazabilirsiniz.

Tek hücre için Sheets("Sayfa1").Range("A1")
Hücre aralığı için Sheets("Sayfa1").Range("A1:A1000")
Tüm sütun için Sheets("Sayfa1").Range("A:A") ya da Sheets("Sayfa1").Columns(1) gibi yazabilirsiniz.
 
Hücreyi biçimlendirme kodu eklemeniz yeterli olacaktır. Bu tarz kodları makro kaydet yöntemi ile çok kolay şekilde elde edebilirsiniz.

C++:
Sub Topla()
[d1] = WorksheetFunction.Sum([a1:a10])
[d1].Font.Bold = True
[d1].Font.Size = 12
[d1].Font.ColorIndex = 21
[d1].Interior.Colorindex = 6
End Sub

Teşekkür ederim iyi çalışmalar.
İhtiyacı olana Renk Scalası ekte verdim.
 

Ekli dosyalar

  • Excel Macro ColorIndex.gif
    Excel Macro ColorIndex.gif
    15.5 KB · Görüntüleme: 5
Eğer Range ifadelerinin başında sayfa adı yoksa o anda aktif sayfa hangisi ise kod o sayfa üzerinde işlem yapar.

Sayfa yönlendirmesi yapmak için Range ifadesinin soluna sayfa adını yazmanız gerekir.

Aşağıdaki gibi yazabilirsiniz.

Tek hücre için Sheets("Sayfa1").Range("A1")
Hücre aralığı için Sheets("Sayfa1").Range("A1:A1000")
Tüm sütun için Sheets("Sayfa1").Range("A:A") ya da Sheets("Sayfa1").Columns(1) gibi yazabilirsiniz.


Sy. Korhan Ayhan ;
ilginiz ve anlayışla karşılamanızdan dolayı Teşekkür ederim. Sayfa işini hallettim soldan sağa gayet güzel çalışıyor ama yukarıdan aşağı çalışmıyor onu da biraz kurcalaya kurcalaya bulurum inşaallah tekrardan teşekkür ederim.
 
Yukarıdan aşağıya siz de ne gibi bir sorun oldu?
 
Sy. Korhan Ayhan ;
Hç Birşey Yazmıyor Toplama Yapmıyor . Bende aşağıdaki gibi yaptım
Sheets("Sayfa2").Range("B39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("b2:b38"))
Sheets("Sayfa2").Range("C39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("C2:C38"))
Sheets("Sayfa2").Range("D39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("D2:D38"))
Sheets("Sayfa2").Range("E39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("E2:E38"))
Sheets("Sayfa2").Range("F39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("F2:F38"))
Sheets("Sayfa2").Range("G39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("G2:G38"))
Sheets("Sayfa2").Range("H39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("H2:H38"))
Sheets("Sayfa2").Range("I39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("I2:I38"))
Sheets("Sayfa2").Range("J39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("J2:J38"))
Sheets("Sayfa2").Range("K39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("K2:K38"))
Sheets("Sayfa2").Range("L39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("L2:L38"))
Sheets("Sayfa2").Range("M39") = WorksheetFunction.Sum(Sheets("Sayfa2").Range("M2:M38"))
 
Sy. Korhan Ayhan ;
Aşağıdaki formülü modül 1 de makroda yapmak için 5 saate yakındır uğraşıyorum ama bir yerlerde takılım kalıyorum
=ÇOKETOPLA('HESAP FİŞİ'!F:F;'HESAP FİŞİ'!E:E;A2)
Yapmış olduğum makro
Dim s1 As Worksheet: Dim s2 As Worksheet: Dim s3 As Worksheet: Dim i As Integer
Set s1 = Sheets("HESAP FİŞİ"): Set s2 = Sheets("Sayfa2")
Set wf = WorksheetFunction
son1 = s1.Cells(s1.Rows.Count, "E").End(3).Row
son2 = s2.Cells(s2.Rows.Count, "A").End(3).Row
For i = 2 To son2
s2.Range("B" & i) = wf.SumIf(s1.Range("E2:E" & son1), s2.Range("A" & i), s1.Range("F2:F" & son1))
Next i

Set wf = WorksheetFunction bunda hata var diyor
 
Hata veren bölüm içinde Dim ile tanımlama yapmayı denediniz mi?
 
Sizin paylaştığınız kod için de "Dim s1 As Worksheet:" şeklinde tanımlama var. Aynı şekilde hata veren satır içinde Dim'lerin olduğu bölüme aşağıdaki gibi tanımlama yapınız.

Dim wf As WorksheetFuntion
 
Sizin paylaştığınız kod için de "Dim s1 As Worksheet:" şeklinde tanımlama var. Aynı şekilde hata veren satır içinde Dim'lerin olduğu bölüme aşağıdaki gibi tanımlama yapınız.

Dim wf As WorksheetFuntion

Sy. Korhan Ayhan ;

İlginiz ve yardımınız için teşekkür ederim. Başta söylemiştim ben makronun acemisi olduğum için maalesef yapamadım.
 
Sağlık olsun. Yavaş yavaş sizlerde öğreneceksiniz.
 
Sy. Korhan Ayhan ;
aşağıda ki kodu düzenleye bilir misiniz size zahmet olmazsa

=ÇOKETOPLA('HESAP FİŞİ'!F:F;'HESAP FİŞİ'!E:E;A2) bu formül makro olacaktı.
Yapmış olduğum makro
Dim s1 As Worksheet: Dim s2 As Worksheet: Dim s3 As Worksheet: Dim i As Integer
Set s1 = Sheets("HESAP FİŞİ"): Set s2 = Sheets("Sayfa2")
Set wf = WorksheetFunction
son1 = s1.Cells(s1.Rows.Count, "E").End(3).Row
son2 = s2.Cells(s2.Rows.Count, "A").End(3).Row
For i = 2 To son2
s2.Range("B" & i) = wf.SumIf(s1.Range("E2:E" & son1), s2.Range("A" & i), s1.Range("F2:F" & son1))
Next i

Set wf = WorksheetFunction bunda hata var diyor
 
Kodlarınızın en tepesinde "Option Explicit" ifadesi var mı?
 
Sy. Korhan Ayhan ;
Sub etopla() var ama bende sizin yaptığınız sub değiştir() makrosu vardı onun düğmesine bağlamak için Sub etopla() ifadesini kaldırdım sadece
 
O bölümde hata vermesi için kodlarınızın en tepesinde belirttiğim ifadenin olması gerekir.

Durumu görselde izah etmeye çalıştım.

229205
 
Sy. Korhan Ayhan ;
Bundan bahsediyorsunuz sanırım evet var.


229210



229211
 
"Option Explicit" komutu varsa kod içinde kullandığınız tüm değişkenleri Dim ifadesi ile tanımlamanız gerekir. Yani zorunluluk durumu yaratır.

İki alternatifiniz var;

1 - "Option Explicit" satırını silebilirsiniz. Bu durumda kodlarınızın en başında bulunan "Dim ....." şeklinde devam eden satırların bulunması da zorunlu değildir. Yani silebilirsiniz.

2 - "Dim ...." ile başlayan satırlarınızın devamına hata veren tanımlamadığınız "wf" değişkenini ekleyerek hata durumunun önüne geçebilirsiniz. Aşağıdaki satırı makronuzun en başında ki Dim ile başlayan satırlara ekleyerek sorunu çözebilirsiniz.

Dim wf As WorksheetFunction
 
Geri
Üst