formülle yapılan işlemleri makro ile yapabilirmiyiz

Akif59

Altın Üye
Katılım
15 Mart 2020
Mesajlar
66
Excel Vers. ve Dili
2013 ve 2016
Altın Üyelik Bitiş Tarihi
20-03-2025
Merhaba
mavi alandaki topla çarpım formülünden makro ile kurtulmak mümkünmü
kırmızı alandaki çıkarma formülünden makro ile kurtulmak mümkünmü


216714
 

Ekli dosyalar

Akif59

Altın Üye
Katılım
15 Mart 2020
Mesajlar
66
Excel Vers. ve Dili
2013 ve 2016
Altın Üyelik Bitiş Tarihi
20-03-2025

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
568
Excel Vers. ve Dili
Office365 TR
dosya.tc sitesine yüklerseniz ve linki paylaşırsanız bakabilirim.
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
568
Excel Vers. ve Dili
Office365 TR
Dosyanızın yedeğini aldıktan sonra deneyiniz.
Kod:
Sub ToplaveCarp()
    sonSatır = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Dim cell As Range
    ActiveSheet.Range("D15:DI15").Select
    For Each cell In Selection
        sütun = cell.Column
        For i = 18 To sonSatır
            toplam = toplam + Cells(i, sütun) * Cells(i, 114)
        Next i
        cell.Value = toplam
        cell.Offset(1, 0) = cell.Offset(-1, 0) - cell
        toplam = 0
    Next cell
    Cells(14, 4).Select
End Sub
 

Akif59

Altın Üye
Katılım
15 Mart 2020
Mesajlar
66
Excel Vers. ve Dili
2013 ve 2016
Altın Üyelik Bitiş Tarihi
20-03-2025
Dosyanızın yedeğini aldıktan sonra deneyiniz.
Kod:
Sub ToplaveCarp()
    sonSatır = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Dim cell As Range
    ActiveSheet.Range("D15:DI15").Select
    For Each cell In Selection
        sütun = cell.Column
        For i = 18 To sonSatır
            toplam = toplam + Cells(i, sütun) * Cells(i, 114)
        Next i
        cell.Value = toplam
        cell.Offset(1, 0) = cell.Offset(-1, 0) - cell
        toplam = 0
    Next cell
    Cells(14, 4).Select
End Sub
Merhaba murat bey kodun aktif olarak çalışması gerekiyor ben dosyada d18 dı 118 aralıgına degerler girdikce bu gederleri dj18 dj118 aralığındaki değerlere çarpacak
bir arkadaşımız şöyle bir kod yazdı istediğim tam olarak bu fakat bu kodda öyle bir sıkıntı var önece dj18 dj118 aralıgındaki değeri öncelikli girmemi istiyor

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D18:DI118")) Is Nothing Then
' On Error Resume Next
' Application.EnableEvents = False
Cells(15, Target.Column) = WorksheetFunction.SumProduct(Range(Cells(18, Target.Column), Cells(118, Target.Column)), Range("DJ18:DJ118"))
Cells(16, Target.Column) = Cells(15, Target.Column) - Cells(14, Target.Column)
Range("DJ15") = WorksheetFunction.Sum(Range("D15:DI15"))
Range("DJ16") = WorksheetFunction.Sum(Range("D16:DI16"))
Range("DJ17") = WorksheetFunction.Sum(Range("D17:DI17"))
' Application.EnableEvents = True
End If
End Sub
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
568
Excel Vers. ve Dili
Office365 TR
Aşağıdaki kodu sayfanın kod kısmına yazınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D18:DI118")) Is Nothing Then
        Call ToplaveCarp
        Target.Select
    End If
End Sub


Sub ToplaveCarp()
    sonSatır = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Dim cell As Range
    ActiveSheet.Range("D15:DI15").Select
    For Each cell In Selection
        sütun = cell.Column
        For i = 18 To sonSatır
            toplam = toplam + Cells(i, sütun).Value * Cells(i, 114).Value
        Next i
        cell.Value = toplam
        cell.Offset(1, 0) = cell.Offset(-1, 0).Value - cell.Value
        toplam = 0
    Next cell
End Sub
 

Akif59

Altın Üye
Katılım
15 Mart 2020
Mesajlar
66
Excel Vers. ve Dili
2013 ve 2016
Altın Üyelik Bitiş Tarihi
20-03-2025
Aşağıdaki kodu sayfanın kod kısmına yazınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D18:DI118")) Is Nothing Then
        Call ToplaveCarp
        Target.Select
    End If
End Sub


Sub ToplaveCarp()
    sonSatır = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Dim cell As Range
    ActiveSheet.Range("D15:DI15").Select
    For Each cell In Selection
        sütun = cell.Column
        For i = 18 To sonSatır
            toplam = toplam + Cells(i, sütun).Value * Cells(i, 114).Value
        Next i
        cell.Value = toplam
        cell.Offset(1, 0) = cell.Offset(-1, 0).Value - cell.Value
        toplam = 0
    Next cell
End Sub
Merhaba murat bey kod hata veriyor hata çözülse bile aynı sayfada aynı başlıklı başka bir kod var
gerçek dosyayı ekliyorum
 

muratboz06

Destek Ekibi
Destek Ekibi
Katılım
23 Mart 2017
Mesajlar
568
Excel Vers. ve Dili
Office365 TR
68.satırdan dolayı hata veriyor, kodu aşağıdaki ile değiştiriniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D18:DI118")) Is Nothing Then
        Call ToplaveCarp
    End If
End Sub
Sub ToplaveCarp()
    sonSatır = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Dim cell As Range
    ActiveSheet.Range("D15:DI15").Select
    For Each cell In Selection
        sütun = cell.Column
        For i = 18 To 118
        If i = 68 Then
        GoTo DoNothing
        End If
            toplam = toplam + Cells(i, sütun).Value * Cells(i, 114).Value
        Next i
DoNothing:
        cell.Value = toplam
        cell.Offset(1, 0) = cell.Offset(-1, 0).Value - cell.Value
        toplam = 0
    Next cell
End Sub
 

Akif59

Altın Üye
Katılım
15 Mart 2020
Mesajlar
66
Excel Vers. ve Dili
2013 ve 2016
Altın Üyelik Bitiş Tarihi
20-03-2025
68.satırdan dolayı hata veriyor, kodu aşağıdaki ile değiştiriniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D18:DI118")) Is Nothing Then
        Call ToplaveCarp
    End If
End Sub
Sub ToplaveCarp()
    sonSatır = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    Dim cell As Range
    ActiveSheet.Range("D15:DI15").Select
    For Each cell In Selection
        sütun = cell.Column
        For i = 18 To 118
        If i = 68 Then
        GoTo DoNothing
        End If
            toplam = toplam + Cells(i, sütun).Value * Cells(i, 114).Value
        Next i
DoNothing:
        cell.Value = toplam
        cell.Offset(1, 0) = cell.Offset(-1, 0).Value - cell.Value
        toplam = 0
    Next cell
End Sub
Elinize sağlık murat bey çok güzel oldu
 
Üst