Soru toplama macrosunda sıra numarasını da dikkate aldırma

Katılım
18 Ağustos 2009
Mesajlar
752
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Arkadaşlar ekli dosyamda detaylı anlattım.

Teşekkürler..
 

Ekli dosyalar

Merhaba,
Deneyip sonucu bildirin lütfen.
Kod:
Sub ToplamAL()

    Dim i As Long, _
        j As Long, _
        d As Variant
    
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("H1") = "TUTAR"
    Columns("I:I").Delete Shift:=xlToLeft
    
    d = Range("A2").Value
    j = 2
    For i = 2 To Cells(Rows.Count, "A").End(3).Row + 1
        If Not Cells(i, "A") = d Then
            Cells(j, "H") = "=SUM(D" & j & ":D" & i - 1 & ")"
            If Not j = i - 1 Then
                With Range("H" & j & ":H" & i - 1)
                    .HorizontalAlignment = xlRight
                    .VerticalAlignment = xlTop
                    .MergeCells = True
                End With
            End If
            j = i
            d = Cells(i, "a")
        End If
    Next i
    
End Sub
 
Merhaba,
Deneyip sonucu bildirin lütfen.
Kod:
Sub ToplamAL()

    Dim i As Long, _
        j As Long, _
        d As Variant
   
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("H1") = "TUTAR"
    Columns("I:I").Delete Shift:=xlToLeft
   
    d = Range("A2").Value
    j = 2
    For i = 2 To Cells(Rows.Count, "A").End(3).Row + 1
        If Not Cells(i, "A") = d Then
            Cells(j, "H") = "=SUM(D" & j & ":D" & i - 1 & ")"
            If Not j = i - 1 Then
                With Range("H" & j & ":H" & i - 1)
                    .HorizontalAlignment = xlRight
                    .VerticalAlignment = xlTop
                    .MergeCells = True
                End With
            End If
            j = i
            d = Cells(i, "a")
        End If
    Next i
   
End Sub

işlem görüyor hocam teşekkürler ancak form düzen ayarlarını bozmakta

240775
 
Merhaba.
Kodları revize ettim deneyiniz.

Kod:
Sub ToplamAL()

    Dim i As Long, _
        j As Long, _
        d As Variant
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("H1") = "TUTAR"
    Columns("I:I").Delete Shift:=xlToLeft
    
    d = Range("A2").Value
    j = 2
    For i = 2 To Cells(Rows.Count, "B").End(3).Row + 1
        If Not Cells(i, "A") = d Then
            Cells(j, "H") = "=SUM(D" & j & ":D" & i - 1 & ")"
            Cells(j, "H").HorizontalAlignment = xlCenter
            If Not j = i - 1 Then
                With Range("H" & j & ":H" & i - 1)
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .MergeCells = True
                End With
            End If
            j = i
            d = Cells(i, "a")
        End If
    Next i
End Sub
 
Merhaba.
Kodları revize ettim deneyiniz.

Kod:
Sub ToplamAL()

    Dim i As Long, _
        j As Long, _
        d As Variant
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("H1") = "TUTAR"
    Columns("I:I").Delete Shift:=xlToLeft
   
    d = Range("A2").Value
    j = 2
    For i = 2 To Cells(Rows.Count, "B").End(3).Row + 1
        If Not Cells(i, "A") = d Then
            Cells(j, "H") = "=SUM(D" & j & ":D" & i - 1 & ")"
            Cells(j, "H").HorizontalAlignment = xlCenter
            If Not j = i - 1 Then
                With Range("H" & j & ":H" & i - 1)
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .MergeCells = True
                End With
            End If
            j = i
            d = Cells(i, "a")
        End If
    Next i
End Sub

Olmuş teşekkürler hocam desteğiniz için. Birde hücre yapılarını bozmasa çok daha iyi olurdu. Toplam alınan alanı aşağıdaki gibi bozuyor

240781
 
Deneyiniz.
B sütunundaki satır sayısına göre işlem yapılmaktadır.
Eğer tablonuzun altında B sütununda başka veriler varsa onları da dikkate alacağından farklı biçimlendirme sonucu ortaya çıkabilir.


Kod:
Sub ToplamAL()

    Dim i As Long, _
        j As Long, _
        d As Variant
    Application.ScreenUpdating = False
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("H1") = "TUTAR"
    Columns("I:I").Copy
    Range("H1").PasteSpecial xlPasteFormats
    Range("G1").Activate
    Columns("I:I").Delete Shift:=xlToLeft
    
    d = Range("A2").Value
    j = 2
    For i = 2 To Cells(Rows.Count, "B").End(3).Row + 1
        If Not Cells(i, "A") = d Then
            Cells(j, "H") = "=SUM(D" & j & ":D" & i - 1 & ")"
            Cells(j, "H").HorizontalAlignment = xlCenter
            If Not j = i - 1 Then
                With Range("H" & j & ":H" & i - 1)
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .MergeCells = True
                End With
            End If
            j = i
            d = Cells(i, "a")
        End If
    Next i
    Application.ScreenUpdating = True
End Su
 
Deneyiniz.
B sütunundaki satır sayısına göre işlem yapılmaktadır.
Eğer tablonuzun altında B sütununda başka veriler varsa onları da dikkate alacağından farklı biçimlendirme sonucu ortaya çıkabilir.


Kod:
Sub ToplamAL()

    Dim i As Long, _
        j As Long, _
        d As Variant
    Application.ScreenUpdating = False
    Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("H1") = "TUTAR"
    Columns("I:I").Copy
    Range("H1").PasteSpecial xlPasteFormats
    Range("G1").Activate
    Columns("I:I").Delete Shift:=xlToLeft
  
    d = Range("A2").Value
    j = 2
    For i = 2 To Cells(Rows.Count, "B").End(3).Row + 1
        If Not Cells(i, "A") = d Then
            Cells(j, "H") = "=SUM(D" & j & ":D" & i - 1 & ")"
            Cells(j, "H").HorizontalAlignment = xlCenter
            If Not j = i - 1 Then
                With Range("H" & j & ":H" & i - 1)
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .MergeCells = True
                End With
            End If
            j = i
            d = Cells(i, "a")
        End If
    Next i
    Application.ScreenUpdating = True
End Su

Teşekkürler hocam ancak neden B sütununa göre işlem yapıyor? Orjinal formumda başka veri var.Önemli olan A sütunundaki numaralara göre işlem yapması. A sütunundaki numara farklılıklarına göre işlem yapmalı
 
Son düzenleme:
Çünkü örnek dosyanızda A16 ve A17 de değer varken B,C ve D 16,17. satırlarda veri yok.
Yani en son değer 15. satırda var.
 
Kodu çalıştırdığınızda, istediğiniz sonucu alamıyor musunuz?
Eğer istediğiniz sonucu alamıyorsanız orijinal dosyanızı ekleyin kontrol edelim.
 
Geri
Üst