Aşağı ve sağa doğru büyüyen bir dizide toplam alma [Archive] - Excel Forum

PDA

Tüm Versiyonu Göster : Aşağı ve sağa doğru büyüyen bir dizide toplam alma


Ali
20-07-2009, 11:16
Bu kısım farklı örnekler ile soru sorulup üyelerimizin deneyerek ,aktif olarak katılarak ve cevaplar vererek öğrenmesi amacıyla açılmıştı. Uzun zamandan beri kullanılmadığını gözlemlediğim için bir soru sorarak bu kısmı aktif hale getirmek istedim.

Çözümler, Fonksiyonla, Makro ve Kullanıcı Tanımlı Fonksiyonlar ile olabilir.

Yanlış yada eksikte olsa cevap verirseniz sevinirim böylece birlikte doğrusunu bulabiliriz.

Fonksiyon ve kullanıcı tanımlı fonksiyonlarda I2 hücresine yazılan formül aşağı doğru çekildikçe otomatik olarak hesaplamalıdır.

Yardımcı sütun kullanılmamalıdır.

fedeal
20-07-2009, 14:27
ben makrolu bir çözüm buldum,
Sub fdl()
Dim a, i, k As Long
Range("J2:J65000").ClearContents
For i = 2 To Range("A65536").End(xlUp).Row
a = 1
For k = i To 2 Step -1
Cells(i, "j") = Cells(i, "j") + Cells(k, a)
a = a + 1
Next
Next
End Sub
kolay görünüyor ama baya kafa yoruyor iyi bir beyin fırtınası teşekkürler.

fedeal
20-07-2009, 14:41
Hocam kullanıcı tanımlı fonksiyonunuda yaptım,
Function yatay_topla(birim As Integer)
a = 1
For k = birim To 2 Step -1
yatay_topla = yatay_topla + Cells(k, a)
a = a + 1
Next
End Function

formulüde k3 hücresi için,

=yatay_topla(SATIR(A2))

mesudiye_052
20-07-2009, 14:45
Selamlar;

basit formülle yapmaya çalıştım

dizi formül oluşturarak yapılırsa çok güzel olur

Saygılar;

Ali
20-07-2009, 14:59
Sayın fedeal çözümleriniz için teşekkürler.


Selamlar;

basit formülle yapmaya çalıştım

dizi formül oluşturarak yapılırsa çok güzel olur

Saygılar;

Sayın mesudiye_052, ekleyen olmazsa yazarım.

fedeal
20-07-2009, 15:52
Sorunun fonksiyonla yapılışı farkettimki makroyla yapmak kadar basit değil
=DOLAYLI("A"&SATIR())+EĞER(EHATALIYSA(DOLAYLI("b"&SATIR()-1));0;DOLAYLI("b"&SATIR()-1))+EĞER(EHATALIYSA(DOLAYLI("c"&SATIR()-2));0;DOLAYLI("c"&SATIR()-2))+EĞER(EHATALIYSA(DOLAYLI("d"&SATIR()-3));0;DOLAYLI("d"&SATIR()-3)+EĞER(EHATALIYSA(DOLAYLI("e"&SATIR()-4));0;DOLAYLI("e"&SATIR()-4))+EĞER(EHATALIYSA(DOLAYLI("f"&SATIR()-5));0;DOLAYLI("f"&SATIR()-5))+EĞER(EHATALIYSA(DOLAYLI("g"&SATIR()-6));0;DOLAYLI("6"&SATIR()-6)))
gibi bir yöntem buldum ama işlevsel değil,soru 5 değilde 10 basamak olursa çuvallıyor.Cevabı ilgiyle bekliyorum.Saygılar.

Ali
20-07-2009, 16:15
Kullanıcı tanımlı bir fonksiyon ile

Function Koseleri_Topla(Bakılacak_alan As Range, Artıs As Integer) As Double
Dim arr As Variant, i As Integer, j As Integer, Topla As Double
arr = Bakılacak_alan
Topla = 0
For i = 1 To Artıs
Topla = Topla + arr(i, Artıs - i + 1)
Next i
Koseleri_Topla = Topla
End Function




=Koseleri_Topla($A$2:$E$6;SATIRSAY($I$2:I2))


yazılıp aşağı doğru çekilir.

Ali
20-07-2009, 16:35
Dizi formülü ile çözüm

=TOPLA(ALTTOPLAM(9;KAYDIR(A2;(-1*(SATIR(DOLAYLI("1:"&SATIR()))-1));SATIR(DOLAYLI("1:"&SATIR()))-1)))

yazılıp CTRL+SHIFT+ENTER tuşlarına birlikte basılıp aşağı doğru çekilir.

yurttas
20-07-2009, 21:20
Dizi formülü ile çözüm

=TOPLA(ALTTOPLAM(9;KAYDIR(A2;(-1*(SATIR(DOLAYLI("1:"&SATIR()))-1));SATIR(DOLAYLI("1:"&SATIR()))-1)))

yazılıp CTRL+SHIFT+ENTER tuşlarına birlikte basılıp aşağı doğru çekilir.

.

Ali bey, bu da, sizin formülün dizi olmayan şekli:

=SUMPRODUCT(SUBTOTAL(9;OFFSET(A2;(-1*(ROW(INDIRECT("1:"&ROW()))-1));ROW(INDIRECT("1:"&ROW()))-1)))

=TOPLA.ÇARPIM(ALTTOPLAM(9;KAYDIR(A2;(-1*(SATIR(DOLAYLI("1:"&SATIR()))-1));SATIR(DOLAYLI("1:"&SATIR()))-1)))


.


Özel Arama