Tek hücredeki işlemlerin farklı hücrelerde gösterimi

Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Değerli arkadaşlar,
Foruma yeni üye oldum. Güzel bir forum, hazırlayanlara teşekkür ederim.
Excel de işin içinden çıkamadığım bir durum var. a1:a100 arasındaki hücrelerde çeşitli sayılar var. S1 hücresine de kriter olarak 1 ile 100 arasında bir sayı yazacağız. Hesaplamalar c1 hücresinde yapılacak ve sonuçlar d1:d100 hücrelerine yazılacak.
c1 hücresine şu formülü yazalım. =eğer (s1=1;a1+a2;"")
d1:d100 hücrelerin herbirine de =c1 yazacağız. Bu durumda s=2 olduğunda c1 hücresi bu sefer farklı bir sonuç üretecek(örneğin =eğer (s=2;a4+a7;""). Bu durumda s=1 kriteri sonucu c1'de oluşan sonuç d1'de yazarken, haliyle s=2 olduğunda c1'de oluşan yeni değer d2 hücresinde gözükürken d1 hücresindeki sonuç sıfırlanacak. Benim istediğim ise d1 hücresi s=1 iken c1 hücresindeki sonucu göstersin, arkasından bu hücredeki veri silinmeden d2 hücresi de s=2 iken yine c1 deki yeni hesaplamayı göstersin. Bu konuda 3 gün kafa yordum, bir çözüm bulamadım, yardım ederseniz çok sevinirim.
 
Katılım
4 Ocak 2010
Mesajlar
2,074
Excel Vers. ve Dili
OFFICE 2007 PRO TR - Win7 X64
Altın Üyelik Bitiş Tarihi
18.06.2019
Selamın Aleyküm.

Formumuza Hoş Geldiniz.
Örnek Dosya Ekleyebilirmisiz...


Hayırlı Günler
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Dosyayı ekledim

Aleyküm selam,
Dosyayı ekledim vedat bey. Yukarıda anlattığım olayı örnekleme için vermiştim. Dosya da S1 hücresine yazacağınız 1 ile 32 arasında bir değer karşılığı oluşan sonuçlar AL3:AL34 aralığındaki hücrelerde gösteriliyor.(AL hücreleri yukarıdaki örnekte verilen D hücrelerine karşılık gelmekte)
İlginiz için teşekkür ederim.
 

Ekli dosyalar

Katılım
28 Mayıs 2009
Mesajlar
11
Excel Vers. ve Dili
2003 en
Klasör içindeki word dosylarının sayfa düzenlerinin makro ile yapılması

merhaba,

kalsör içinde bulunan word dosyalarının sayfa düzeninin makro yardımıyla yapılması mümkünmüdür? Yardımlarınızı rica ederim.
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Aleyküm selam,
Dosyayı ekledim vedat bey. Yukarıda anlattığım olayı örnekleme için vermiştim. Dosya da S1 hücresine yazacağınız 1 ile 32 arasında bir değer karşılığı oluşan sonuçlar AL3:AL34 aralığındaki hücrelerde gösteriliyor.(AL hücreleri yukarıdaki örnekte verilen D hücrelerine karşılık gelmekte)
İlginiz için teşekkür ederim.
Soruma henüz cevap gelmedi, arkadaşlar yardımcı olursanız sevinirim.
 

Serdar SELEN

Altın Üye
Katılım
23 Ekim 2007
Mesajlar
308
Excel Vers. ve Dili
İşyerinde Excel 2003 ing
Evde Excel 2007 tr
Altın Üyelik Bitiş Tarihi
02-04-2025
Merhaba,

Son derece karışık bir anlatım olmuş bu şekilde net bir cevap alamayabilirsiniz.
Dosya üzerinde bıraz daha aydınlatıcı bilgi yazarsanız cevap verebiliriz.
Kolay gelsin.
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Soruyu daha da basitleştirecek bir ek dosya ekledim(deneme1). Gerekli açıklamalar içinde vardır. Yardım edecek tüm arkadaşlara şimdiden teşekkür ederim.
 

Ekli dosyalar

Serdar SELEN

Altın Üye
Katılım
23 Ekim 2007
Mesajlar
308
Excel Vers. ve Dili
İşyerinde Excel 2003 ing
Evde Excel 2007 tr
Altın Üyelik Bitiş Tarihi
02-04-2025
Merhaba,

E3 hücresine aşağıdaki formulü uygulayınız.

=TOPLA.ÇARPIM((A2<=$D$1)*(B2:C2))

Kolay gelsin
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Merhaba,

E3 hücresine aşağıdaki formulü uygulayınız.

=TOPLA.ÇARPIM((A2<=$D$1)*(B2:C2))

Kolay gelsin
Serdar bey teşekkür ederim ama sorun hallolmuyor maalesef. Sizin formülü girdiğimde e2 hücresinde sonuç gözükürken e3 ve diğerlerinde sadece " DOĞRU" değerini veriyor.
 

Serdar SELEN

Altın Üye
Katılım
23 Ekim 2007
Mesajlar
308
Excel Vers. ve Dili
İşyerinde Excel 2003 ing
Evde Excel 2007 tr
Altın Üyelik Bitiş Tarihi
02-04-2025
Dosyanı ektedir.

Kolay gelsin.
 

Ekli dosyalar

Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Yanıtınız için çok teşekkürler Serdar bey, bu örnekte gerçekten istenileni veriyor. Ancak konunun ilk başında verdiğim asıl örnekte uyguladığım zaman en son çıkan sonuç bu sefer tüm hücrelerde gözüküyor.(Bu örnekte değişken kriterler S1 hücresinde belirleniyor, sonuçlar AL hücrelerinde gözüküyor). Siz konuya da hakim oldunuz, acaba oradaki formülde nasıl bir değişiklik yapmak gerekiyor.

Oradaki sorun aslında hesaplamaların hep aynı hücrelerde yapılması, doğal olarak kriterler değiştiğinde belirli hücrelerdeki verilerde değişiyor.

Eğer ona da bir çözüm bulabilirseniz çok memnun olacağım, ben de sizin verdiğiniz formül üzerinde ayrıca çalışacağım.
Zamanınızı ayırdığınız için tekrar teşekkür ederim,
 

Serdar SELEN

Altın Üye
Katılım
23 Ekim 2007
Mesajlar
308
Excel Vers. ve Dili
İşyerinde Excel 2003 ing
Evde Excel 2007 tr
Altın Üyelik Bitiş Tarihi
02-04-2025
AL hücresine aşağıdaki formülü uygulayınız.

=EĞER(S$1>=AC3;MAK(C20:J20);"")

Kolay gelsin.
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Maalesef olmadı Serdar bey, zira $c$22:$j$22 dizisi sabit olmalı.
Yine de çok teşekkür ediyorum.
 

Serdar SELEN

Altın Üye
Katılım
23 Ekim 2007
Mesajlar
308
Excel Vers. ve Dili
İşyerinde Excel 2003 ing
Evde Excel 2007 tr
Altın Üyelik Bitiş Tarihi
02-04-2025
Merhaba,

c22:j22 satırlarının sabit olması durumunda bu hücrelerde maksimum değer hep 4 çıkacaktır.
Belki kaçırdığım bir nokta vardır.
Baştan sizin dosyanız üstünde gidelim.

S1 hücresine yazdığınız sayı kadar AL sütununda veri yazılsın istiyorsunuz ve bunun c22:j22 satırlarından alınmasını istiyorsunuz (sonuç hep 4 çıkar).

Doğru anlamışmıyım ?
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
S1 hücresine 1 ile 32 arasında bir değer giriyoruz. Bu değerlere göre c22:j22 satırlarında her defasında farklı hesaplamalar oluyor. AL hücreleri de bu satırlarda hesaplanan değerlerden en çok çıkanları yazıyor(Yanındaki sütunda da en çok çıkan değerin dizide kaç kez tekrarlandığını yazar) Program bunu yapıyor. Sorun şurada başlıyor: Somut olarak s1=1 değerini aldığında Al3=5 oluyor, s1=2 olduğunda AL4=4 oluyor. Bu esnada AL3 hücresindeki 5 değeri değeri siliniyor. Keza s1=3 olduğunda AL5=4 olurken AL3 ve AL4 hücreleri 0 değer alıyor. Bu sırasıyla devam ediyor. Burada istediğimiz s1'e verilen son değerin karşılığında yapılan hesaplamalar AL hücresinde görüntenirken S1'e daha önce verilmiş değerlerin sonuçlarının da AL hücrelerinde gösterilmesi.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,687
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ekteki örnek dosyayı incelermisiniz. D1 hücresine veri girip sonucu gözlemleyin. Makro ile çözüm hazırlanmıştır.

Kullanılan kod; (Sayfanın kod bölümüne uygulayın.)

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim BUL As Range
    On Error GoTo Son
    If Intersect(Target, Range("D1")) Is Nothing Then Exit Sub
        If Target <> Empty Then
            Set BUL = Range("A:A").Find(Target)
            If Not BUL Is Nothing Then
                If Range("E2") = Empty Then
                    Range("E2") = Cells(BUL.Row, "B") + Cells(BUL.Row, "C")
                Else
                    Range("E65536").End(3).Offset(1, 0) = Cells(BUL.Row, "B") + Cells(BUL.Row, "C")
                End If
            Else
                MsgBox Target & " değeri bulunamamıştır !", vbCritical
            End If
        End If
Son:
    Set BUL = Nothing
End Sub
 

Ekli dosyalar

Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Hocam cevap için teşekkürler, makronuz deneme1.xls dosyasındaki sorunu hallediyor, ancak bu örneği ilk sayfada verdiğim formüldeneme1.xls dosyasında uygulayamıyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,687
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Bahsettiğiniz dosyadaki AL sütunundaki formülleri silin ve aşağıdaki kodu deneyin.

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim BUL As Range
    On Error GoTo Son
    If Intersect(Target, Range("S1")) Is Nothing Then Exit Sub
        If Target <> Empty Then
            Set BUL = Range("AC:AC").Find(Target)
            If Not BUL Is Nothing Then
                If Range("AL3") = Empty Then
                    Range("AL3") = WorksheetFunction.Max(Range("C22:J22"))
                Else
                    Range("AL65536").End(3).Offset(1, 0) = WorksheetFunction.Max(Range("C22:J22"))
                End If
            Else
                MsgBox Target & " değeri bulunamamıştır !", vbCritical
            End If
        End If
Son:
    Set BUL = Nothing
End Sub
 
Katılım
18 Mayıs 2010
Mesajlar
10
Excel Vers. ve Dili
2003
türkçe
Hocam ellerinize sağlık, makronuz problemimi halletti. Hocam müsait olursanız bir sorum daha olacak. Hazırladığınız makroda C22:J22 dizi aralığında en yüksek değerler bulunarak AL hücrelerine yazılıyordu. Her bir yüksek değerin dizide kaç kez tekrar ettiğini bir başka hücreye(örneğin AL hücresinin hemen yanına) nasıl yazdırabiliriz acaba.

Bir de merak ettiğim bir husus var, makrosuz bu sorunu çözememiştim bir türlü, acaba makrosuz da bunun bir yolu varmıydı. (zira yaklaşık 15 gün uğraşmıştım üzerinde).
Tekrar teşekkür ederim hocam.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,687
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Aynı diziyi kullanarak farklı değerler üretmek istiyorsunuz ve oluşan değeleride geriye doğru listelemek istiyorsunuz. Maalesef formüllerle bu mümkün değil. Çünkü formül kullandığınızda tüm hesaplamalarınız tetiklenecektir. Bu da eski verilerinde yeniden güncellenmesine sebep olacaktır.

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim BUL As Range
    On Error GoTo Son
    If Intersect(Target, Range("S1")) Is Nothing Then Exit Sub
        If Target <> Empty Then
            Set BUL = Range("AC:AC").Find(Target)
            If Not BUL Is Nothing Then
                If Range("AL3") = Empty Then
                    Range("AL3") = WorksheetFunction.Max(Range("C22:J22"))
                    Range("AM3") = WorksheetFunction.CountIf(Range("C22:J22"), Range("AL3"))
                Else
                    Range("AL65536").End(3).Offset(1, 0) = WorksheetFunction.Max(Range("C22:J22"))
                    Range("AL65536").End(3).Offset(1, 1) = WorksheetFunction.CountIf(Range("C22:J22"), Range("AL65536").End(3).Offset(1, 0))
                End If
            Else
                MsgBox Target & " değeri bulunamamıştır !", vbCritical
            End If
        End If
Son:
    Set BUL = Nothing
End Sub
 
Üst