• DİKKAT

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

Dizi içinde satır Toplamı

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
merhaba,
Aşağıdaki kodda nümerik değer içeren E,F,G,H sütunları bir dizi (arr) içine aldıktan sonra;

Bu 4 sütunun satır olarak toplamını 2. bir dizi (arr2) içine ızlıca nasıl alabiliriz?

Örnek:
E2: 12, F2: 21, G2: 8, H2: 19
hücrelerinde bu değerler olsun, arr2(1)=12+21+8+19=60 değerini atayacak,
bunu tüm satırlar boyunca yapacak.

Şimdiden teşekkürler,
Kod:
Dim SH As Worksheet
Dim arr As Variant
Dim arr2 As Variant
Dim y As Long

Set SH = Sayfa1

y = SH.Cells(SH.Rows.Count, "A").End(xlUp).Row
arr = SH.Range("E2:H" & y).Value
 
Ben bir şey yazdım ama diğer arkadaşlardan daha profesyonelce çözümler gelebilir.

Kod:
Sub dizi_toplami()
    Dim arr()
    Dim arr2()
    For Each hcr In [e2:h2]
        k = k + 1
        ReDim Preserve arr(0 To k)
        arr(k) = hcr.Value
    Next
    For t = 1 To UBound(arr)
        x = arr(t) + x
    Next
    ReDim arr2(0)
    arr2(0) = x
    MsgBox arr2(0)
End Sub
 
Alternatif;

C++:
Option Explicit

Sub Test()
    Dim WF As WorksheetFunction
    Dim Sh As Worksheet, My_Data As Variant
    Dim My_Sum_Data As Variant, X As Long
    
    Set Sh = Sayfa1
    Set WF = WorksheetFunction
    
    My_Data = Sh.Range("E2:H" & Sh.Cells(Sh.Rows.Count, 1).End(3).Row).Value
    
    ReDim My_Sum_Data(1 To UBound(My_Data, 1), 1 To 1)
    
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        My_Sum_Data(X, 1) = WF.Sum(Application.Index(My_Data, X))
    Next
    
    Range("J2").Resize(UBound(My_Sum_Data)) = My_Sum_Data
End Sub
 
Alternatif;

C++:
Option Explicit

Sub Test()
    Dim WF As WorksheetFunction
    Dim Sh As Worksheet, My_Data As Variant
    Dim My_Sum_Data As Variant, X As Long
   
    Set Sh = Sayfa1
    Set WF = WorksheetFunction
   
    My_Data = Sh.Range("E2:H" & Sh.Cells(Sh.Rows.Count, 1).End(3).Row).Value
   
    ReDim My_Sum_Data(1 To UBound(My_Data, 1), 1 To 1)
   
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        My_Sum_Data(X, 1) = WF.Sum(Application.Index(My_Data, X))
    Next
   
    Range("J2").Resize(UBound(My_Sum_Data)) = My_Sum_Data
End Sub
Teşekkürler Kothan Hocam
 
Geri
Üst