• DİKKAT

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

Belli hücrelerdeki değerleri alıp toplamak

Katılım
3 Mayıs 2007
Mesajlar
7
Excel Vers. ve Dili
Office 2003
Arkadaşlar merhaba, sizden bir konuda destek rica ediyorum, yapmak istediğim şey altta örneğini verdiğim gibi, alttaki hücrelere girilen değerleri üstteki hücrelerde rakama denk gelen yerlerden alması ve toplaması.

A B C D E F
1 2 3 4 5 6
50 75 40 100 12 36


altta verilen numaraya göre üstten değerleri alıp sağda toplayacak

1 4 3 4 6 5 338

örneğin alttaki ilk sütuna 1 yazarsam 50 yi toplayacak, 2 yazarsam 75 olarak toplayacak, üstteki numaralar sabit olmuyor, sürekli değişeceğinden, hücre blgisini aldırmak mı gerekir acaba ?

pXYBWr.jpg
 
Evet hocam liste göründüğü gibi düzenlenecek
pardon belge tamamlandığında daha ek satırlar eklenecek fakat onları ben aynı mantıkta ekleyeceğim için önemli olan bu şekilde değerleri almam.
 
Son düzenleme:
. . .

Bence örneği biraz daha açıklayın.

Her zaman 10.satıra girilen veriler
4.satırdaki numaralarına göre 5.satırdaki değerleri ile mi toplanacak...

Tablonun devamında 11.-12. satır diye devam ediyor mu veya 6. 7.satır olarak...

. . .
 
ilk söylediğiniz gibi hocam
"Her zaman 10.satıra girilen veriler
4.satırdaki numaralarına göre 5.satırdaki değerleri ile mi toplanacak..."
bu işlemde sonrası olmayacak, yanlız hocam illaki 6 değer girmeyeceğim bazen bu 3-4 değer de olur yani illaki 6 değerin hepsini toplayacağım diye bir şey yok, 4 tane girsem 4 tanesini alacak toplayacak
 
Deneyiniz.

Kod:
=TOPLA.ÇARPIM(ARA(B10:G10;$B$4:$G$4;$B$5:$G$5))

Boş olan verilerdeki hatayı önlemek için aşağıdaki gibi DİZİ formül olarak kullanabilirsiniz.

Kod:
=TOPLA(EĞER(EHATALIYSA(ARA(B10:G10;$B$4:$G$4;$B$5:$G$5));0;ARA(B10:G10;$B$4:$G$4;$B$5:$G$5)))
 
. . .

Makro ile;

Kod:
Sub kod()
    
    topla = Empty: Range("I10") = ""
    
    Dim dizi(1 To 6)
    For i = 1 To 6
        dizi(i) = Cells(5, i + 1)
    Next i
    For Each alan In Range("B10:G10")
        If alan <> "" and alan<>0 Then
            topla = topla + dizi(alan)
        End If
    Next
    Range("I10") = topla
    
End Sub

. . .
 
Son düzenleme:
Hocam değer girmem durumunda birinci verdiğiniz kod güzel çalıştı fakat değer vermediğim veya 0 girdiğim alanlar olunca hata verdi, 2 ci verdiğiniz kod ise direkt ne olursa olsun bende 0 veriyor.
 
.

Makro kodlarını butona atayarak çalıştırmalısınız.
8 nolu mesajıma bir koşul daha ekledim.

.
 
2. formülü dizi formül olarak uygulayıp deneyiniz.
 
Hocam makro ile bir güzel çalıştı elinize sağlık, yanlız makroyu tuşa atayınca şu şekilde değiştirmem gerekti.
Private Sub CommandButton1_Click()


topla = Empty: Range("I10") = ""

Dim dizi(1 To 6)
For i = 1 To 6
dizi(i) = Cells(4, i + 1)
Next i
For Each alan In Range("B11:G11")
If alan <> "" And alan <> 0 Then
topla = topla + dizi(alan)
End If
Next
Range("I10") = topla

End Sub

Teşekkür ederim
 
Geri
Üst