• DİKKAT

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

Toplama Yapabilmek

Katılım
15 Kasım 2008
Mesajlar
14
Excel Vers. ve Dili
2007 excel
Arkadaşlar merhaba

Örneğin

A1:A10 arası seçili alanım olsun vede A1,A2,A3,A4 sayılar ile dolu olsun.
ben boş olan son satır komutu ile A5 hücresini seçili hale getirmiş olayım yani aktif hücrem A5 hücresi.

benim istediğim,bulumadığım,yapamadığım ve sizden yardım istediğim konu şu:

İstediğim bir hücreye aktif olan hücrenin gerisindeki 3 hücrenin toplamını alayım.Örneğimdekine göre isteğim şöyle

örneğin B1=A4+A3+A2

işyerinde olduğum için dosya ekleyemedim anlatmaya çalıştım.

Herkese teşekkürler.
 
Eğer önceki satırlar sürekli dolu olacaksa, örneğin son dolu hücre A5 iken A3 hücresi boş olmayacaksa aşağıdaki formülü kullanabilirsiniz:

Kod:
=EĞER(BAĞ_DEĞ_SAY(A1:A10)>2;TOPLA(DOLAYLI("A"&BAĞ_DEĞ_SAY(A1:A10)-2&":A"&BAĞ_DEĞ_SAY(A1:A10)));"Yeterli veri yok")
 
cevap için teşekkürler

fonksiyonları ingilizceye çevirip denemeye çalışacağım işyerinde ingilizce kullanılıyor.

sonucu en kısa zamanda yazacağım.
 
Macrolu Alternatif olsun
Sayfanın kod bölümüne yapıştırın
A sütununda tıkladığınız hücreden öncesinden a2 ye kadar ne varsa toplar B1 e yazar

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 If Not Intersect(Target, Range("a2:a100")) Is Nothing Then
[b1] = 0
mm = ActiveCell.Row
For xx = 2 To mm - 1
[b1] = [b1] + Cells(xx, "a")
Next
End If
End Sub
 
Macrolu Alternatif olsun
Sayfanın kod bölümüne yapıştırın
A sütununda tıkladığınız hücreden öncesinden a2 ye kadar ne varsa toplar B1 e yazar

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 If Not Intersect(Target, Range("a2:a100")) Is Nothing Then
[b1] = 0
mm = ActiveCell.Row
For xx = 2 To mm - 1
[b1] = [b1] + Cells(xx, "a")
Next
End If
End Sub

öncelikle teşekkürler

benim istediğim tıklama değil son boş hücreye getirme fonksiyonu ile belirttiğim alandaki son dolu hücrenin altına otomatik gelmesi ve geldiği son boş hücreden önceki dolu olan 3 hücredeki değerleri bana toplam olarak vermesi.
 
Eğer önceki satırlar sürekli dolu olacaksa, örneğin son dolu hücre A5 iken A3 hücresi boş olmayacaksa aşağıdaki formülü kullanabilirsiniz:

Kod:
=EĞER(BAĞ_DEĞ_SAY(A1:A10)>2;TOPLA(DOLAYLI("A"&BAĞ_DEĞ_SAY(A1:A10)-2&":A"&BAĞ_DEĞ_SAY(A1:A10)));"Yeterli veri yok")

üstad senin formülü ingilizce olarak yazıp eklediğimde veri yok mesajı geliyor ancak tabloda veri var.
 
Dosyayı o haliyle paylaşırsanız inceleriz. Bende hata vermiyor. O hatayı veri sayısı 3’ten azsa verir.
 
MuPRTb.png
 
Resim yerine Excel dosyası olursa daha iyi olur. Eklediğiniz resimde hata görünmüyor. İlk başta A1:A10 demiştiniz ama resimdeki veriler o aralıkta değil ve hangi hücreler olduğu da belli değil. Soruda B1’e yani başka sütuna toplamaktan bahsetmiştiniz ama resimde verilerin altında istiyorsunuz.

Lütfen sorularınızı gerçek dosya yapınıza göre sorun ki çözümü ona göre yapalım.
 
“Son dolu hücrenin altındaki boş hücrenin seçilmesi” işlemi ne zaman gerçekleşmeli? Excel bu işlemi be zaman yapacağını beye göre belirleyecek? Dosya açıldığında mı, belirli bir hücre değiştiğinde mi, bir düğmeye basıldığında mı, belirli bir hücreye belirli bir veri girildiğinde mi yoksa başka bir durumda mı vs?
 
son boş hücreye veri girildiğinde

örnek üzerinden gider isek şu an b5 hücresi dolu
ben b6 hücresine yeni veri girdiğimde devreye girsin yani seçili hücre b7 olsun
sistem bana B6+B5+B4 Toplamını versin istiyorum.
 
Deneyiniz.

Kod:
=TOPLAM(KAYDIR($N$1;ARA(2;1/($N$1:$N$1000<>"");SATIR($N$1:$N$1000))-3;;3))
 
Aşağıdaki kodları ilgili sayfanın kod bölümüne (sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya) yapıştırıp deneyiniz. B sütununa veri girdikçe o hücre ile ondan önceki 2 hücrenin toplamını F1 hücresine yazar ve bir sonraki hücreyi seçer:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
a = Target.Row
[F1] = WorksheetFunction.Sum(Range("B" & a - 2 & ":B" & a))
Target.Offset(1, 0).Select
End Sub
 
Aşağıdaki kodları ilgili sayfanın kod bölümüne (sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya) yapıştırıp deneyiniz. B sütununa veri girdikçe o hücre ile ondan önceki 2 hücrenin toplamını F1 hücresine yazar ve bir sonraki hücreyi seçer:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
a = Target.Row
[F1] = WorksheetFunction.Sum(Range("B" & a - 2 & ":B" & a))
Target.Offset(1, 0).Select
End Sub

Kod için teşekkürler çalıştı.

ancak aynı sayfada başka hücredede çalıştırmak için

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
a = Target.Row
[C24] = WorksheetFunction.Sum(Range("B" & a - 2 & ":B" & a))
Target.Offset(1, 0).Select
End Sub
Private Sub Worksheet_Change1(ByVal Target As Range)
If Intersect(Target, [F:F]) Is Nothing Then Exit Sub
a = Target.Row
[C25] = WorksheetFunction.Sum(Range("F" & a - 2 & ":F" & a))
Target.Offset(1, 0).Select
End Sub

örneğin f hücresi için böyle uyarladım ancak çalışmadı
 
Sayfa kodlarında aynı anda aynı türden birden fazla olay kodu çalışmaz. Kodların birleşmiş hali aşağıdaki gibidir:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then GoTo 10
a = Target.Row
[C24] = WorksheetFunction.Sum(Range("B" & a - 2 & ":B" & a))
Target.Offset(1, 0).Select
10:
If Intersect(Target, [F:F]) Is Nothing Then Exit Sub
b = Target.Row
[C25] = WorksheetFunction.Sum(Range("F" & b - 2 & ":F" & b))
Target.Offset(1, 0).Select

End Sub
 
En başta soru “A1:A10 arasındaki son 3 hücrenin toplamının B1’e yazılması” iken

Şimdi ise “B sütunundaki son üç hücrenin toplamının C24 ve F sütunundaki son üç hücrenin toplamının C25’e yazılması” oldu.

Soruyu en baştan bu şekilde sorsaydınız daha çabuk cevap alırdınız. Soruların her zaman gerçek dosya yapısına uygun ve tam olarak ne istediğimizi açıklar şekilde olması hepimiz için kolaylık ve güzellik olur.
 
Sayfa kodlarında aynı anda aynı türden birden fazla olay kodu çalışmaz. Kodların birleşmiş hali aşağıdaki gibidir:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then GoTo 10
a = Target.Row
[C24] = WorksheetFunction.Sum(Range("B" & a - 2 & ":B" & a))
Target.Offset(1, 0).Select
10:
If Intersect(Target, [F:F]) Is Nothing Then Exit Sub
b = Target.Row
[C25] = WorksheetFunction.Sum(Range("F" & b - 2 & ":F" & b))
Target.Offset(1, 0).Select

End Sub

üstad ellerine sağlık
tekrardan teşekkürler
 
En başta soru “A1:A10 arasındaki son 3 hücrenin toplamının B1’e yazılması” iken

Şimdi ise “B sütunundaki son üç hücrenin toplamının C24 ve F sütunundaki son üç hücrenin toplamının C25’e yazılması” oldu.

Soruyu en baştan bu şekilde sorsaydınız daha çabuk cevap alırdınız. Soruların her zaman gerçek dosya yapısına uygun ve tam olarak ne istediğimizi açıklar şekilde olması hepimiz için kolaylık ve güzellik olur.

kesinlikle haklısınız ama niyetim mantığını anlayıp kendim yapmaya çalışmaktı.
 
üstad verdiğin cevapta malum 2 parametre aldık yani c24 vede c25 e veri getirdik.toplamda 4 parametrem olacak bunları çekerken tekrarlarda neye dikkat etmem gerekir.

örneğin c26 için c sütununu seçeceğim aynı mantıkla.
c27 g sütunu
 
Geri
Üst