• DİKKAT

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

Dizide toplamları yazdıramadım

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,042
Excel Vers. ve Dili
2013 Türkçe
Arkadaşlar bu aralar hiç bilmediğim diziler konusuna yoğunlaştım. Deneme dosyamda verileri topluyorum ama nerden hata yapıyorum anlayamıyorum.

Kodları kendim yazdım. Değişkenleri tanımlayamadım( Double,İnteger, ...)

Kodların mantığı doğru mudur?
Sub Düğme1_Tıklat()
Dim veri()
c = Range("F2:F4")
a = Range("B2:C20")

For j = 1 To UBound(c)
x = 0
For i = 1 To UBound(a)
If c(j, 1) = a(i, 1) Then
x = x + a(i, 2)

End If
Next i

ReDim Preserve veri(1 To UBound(c))
say = say + 1

veri(say) = x
MsgBox x
Next j

Range("G2").Resize(say) = veri
End Sub
 

Ekli dosyalar

Kod:
Sub Düğme1_Tıklat()
    
    c = Range("F2:F4").Value
    a = Range("B2:C20").Value
    ReDim veri(1 To UBound(c), 1 To 1)
    
    For j = 1 To UBound(c)
        For i = 1 To UBound(a)
            If c(j, 1) = a(i, 1) Then
                veri(j, 1) = veri(j, 1) + a(i, 2)
            End If
        Next i

        MsgBox veri(j, 1)
    Next j

    Range("G2").Resize(UBound(veri)) = veri
End Sub
 
Sn veyselemre,

Cevabınız için teşekkür ederim. 2 sorum daha olacak.
1- Değişkenleri nasıl tanımlayabiliriz.
2- Dosyadan gidersek B sütununda isimler olsun. Sayısal veriler sadece C de değil de C:H sütunlarında olsa C:H aralığını toplarken
x=worksheetfunction.Sum(range("C" & i & ":H" & i)) şeklinde topluyoruz. Dizilerde böyle toplam alabiliyor muyuz? Yoksa tek tek veya sütun döngüsü ile mi toplayabiliyoruz.
 
Kod:
Dim a(3,5) as integer
vs. tanımlanabilir.


Kod:
Sub test()
    For i = 2 To 3
        a = Application.Transpose(Cells(i, 3).Resize(1, 6).Value)
        MsgBox WorksheetFunction.Sum(a)
    Next i
End Sub
 
Cevaplarınız için çok teşekkür ederim Sn. veyselemre. Sizler sayesinde bu dizileri öğreneceğim.
 
Ama dizide çalıştıramadım.
Sub test()
b = Range("C3:H4")
For i = 1 To UBound(b, 1)
a = Application.Transpose(b(i, 1).Resize(1, 6).Value)
MsgBox WorksheetFunction.Sum(a)
Next i
End Sub
 
Resize sadece range alanlarda çalışır.

Range (alandan) diziye yüklemelerde .value mutlaka kullanın.

Kod:
Sub test()
    b = Range("C3:H4").Value
    For i = 1 To UBound(b, 1)
        a = Application.Index(b, i)
        MsgBox WorksheetFunction.Sum(a)
    Next i
End Sub
 
İlk değer 2. satır toplamını veriyor. Diğer değer 0 değerini verdi.
 
Kusura bakmayın C2:C3 aralığındaymış değerler. Çok teşekkür ederim.
 
Sn. veyselemre;
Kodlarınızı dosyama uyarladım.
0,20 sn artış gösterdi.
Dizilerde sort ile sıralama yapmak mümkün mü?
 

Ekli dosyalar

Geri
Üst