• DİKKAT

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

bir alan içindeki rastgele verilere göre toplam alma

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,714
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
Merhabalar Sayın hocalarım
bir alan içindeki verilere göre toplam ile ilgili bi formül yapmak istiyorum.
Fakat toplatacağım veriler kriter alınacak verilerin hemen sağ tarafındaki hücrede olucak.
ekli çizelgemdede anlatmaya çalıştım.

düzeltme tablodaki olması gerekn sonuç ta 0<>5 in yanındaki değer 110 değil 204 olcak arada bi 94 değerini manule yaparken unutmuşum
 

Ekli dosyalar

yanıt

Makrolu çözüm işinize yarar ise kodu sayfa kod bölümüne uygulayınız.
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [c5:ı239]) Is Nothing Then Exit Sub
Dim alan As Range
[l7:l11] = Empty
    For Each alan In Range("c5:ı23")
        If alan.Value = [k7] Then [l7] = [l7] + alan.Offset(0, 1).Value
        If alan.Value = [k8] Then [l8] = [l8] + alan.Offset(0, 1).Value
        If alan.Value = [k9] Then [l9] = [l9] + alan.Offset(0, 1).Value
        If alan.Value = [k10] Then [l10] = [l10] + alan.Offset(0, 1).Value
        If alan.Value = [k11] Then [l11] = [l11] + alan.Offset(0, 1).Value
    Next
End Sub
 
öncelikle ilginize teşekkür ederim
sorucağım şey ise benim çizelgeme göre sadece makro yaptınız ve bir seferlik herhalde
düşünün ben o seçilmiş aralıkta verilerin yerlerini değiştirebilirim yine aralık içinde kalıcak ama yerlerini değiştiricemç makronun içeriğini tam anlayamadığımdan
makrolu çözümü uygulayacam şimdi ama diğer çözüm yani formüllü çözüm beklemekteyim
 
işleri zorlaştırmak için sormuyorum ama kriter değerlerin 1 değilde 2 yan sütununa verileri yazcaksam kod içindeki alan.Offset(0, 1) kısmını Offser(0, 2) mi yapmam gerekecek
yada verilen 1 alt hücresine yazacaksam (-1, 0) gibi anlamlar mı çıkıyo sayın N.Ziya Hiçdurmaz Hocam
 
hocam ben yine bu makro uygulamasını sonuçlandırmadım dosyam açıkken alt+f11 ile açılan sayfada insert/module diyorum sizin yazdığınız ifadeleri kopyala yapıştır diyorum ama sonuç çıkmıyo yardımcı olurmusunuz
 
yanıt

Kod:
[a1].Offset(0, 1) = "1" 'a1 hücresinin bir sağı
[a1].Offset(0, 2) = "1" 'a1 hücresinin iki sağı
[c5].Offset(1, 0) = "1" 'c5 hücresinin bir altı
[c5].Offset(-1, 0) = "1" 'c5 hücresinin bir üstü
 

Ekli dosyalar

sizin yazdığınız makroyu tam olarak uygulamak için
dosya açıkken
ALT+F11 yapılır
açılan pencerede INSERT/MODULE yapılı
açılan pencereye ifade kopyalanır.
............. sonrası ne hocam?
 
Yazdığım kod sayfa kod bölümünde çalışır.Sayfa sekmesi üzerinde sağ kilik yapıp kod görüntüleye tıklayınız.
 
hocam siz şimdi benim çalışma sayfamda sayfa 1 e mi bu makroyu uyguladınız dimi tümünemi
ben az önce sayfa 2 yi tıkladım sekmeyi sağ tıkladım makro görüntüle kısmı boştu
sayfa 1 deki makro ekranını açtım kopyaladım yapıştırdım sayfa 2 ye
ve sayfa 1 deki tabloyu aynen kopyaladım ve sonuçlar doğru çıktı

anlatımımda bi hata yok dimi hocam
 
yanıt

Evet dediğiniz gibi.Kodların tüm sayfalarda çalışması için ThisWorkbook'a uygulanması gerekir. alttaki örnekteki gibi

Kod:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, [c5:ı239]) Is Nothing Then Exit Sub
Dim alan As Range
[l7:l11] = Empty
    For Each alan In Range("c5:ı23")
        If alan.Value = [k7] Then [l7] = [l7] + alan.Offset(0, 1).Value
        If alan.Value = [k8] Then [l8] = [l8] + alan.Offset(0, 1).Value
        If alan.Value = [k9] Then [l9] = [l9] + alan.Offset(0, 1).Value
        If alan.Value = [k10] Then [l10] = [l10] + alan.Offset(0, 1).Value
        If alan.Value = [k11] Then [l11] = [l11] + alan.Offset(0, 1).Value
    Next
End Sub
 
hocam ben şimdi tablo düzenliyorum çalışma alanım değişicek geneişleyecek bayağı
kendim modu da anlamay çalışıp yapmaya çalışacağım ama beceremezsem yine yazacağım size
ayrıca formülasyonlu çözümü halen merak ediyorum
 
yanıt

Yeni tablonuzdaki hücre adreslerini örneğe bakarak değiştirebilirsiniz

Kod:
[l7:l11] = Empty [COLOR="Red"]'ı7 ı11 aralığını temizler[/COLOR]
    For Each alan In Range("c5:ı23")[COLOR="red"] 'c5:ı23 aralığını dögü içerisine alır[/COLOR]
        If alan.Value = [k7] Then [l7] = [l7] + alan.Offset(0, 1).Value [COLOR="red"]'döngü içerisine alınan hücrelerin bir sağındakilerinin toplamlarını ı7 hücresine alır[/COLOR]
        If alan.Value = [k8] Then [l8] = [l8] + alan.Offset(0, 1).Value
        If alan.Value = [k9] Then [l9] = [l9] + alan.Offset(0, 1).Value
        If alan.Value = [k10] Then [l10] = [l10] + alan.Offset(0, 1).Value
        If alan.Value = [k11] Then [l11] = [l11] + alan.Offset(0, 1).Value
 
esas çizelgeye dönüştüremedim.

hocam asıl çizelgemi uyarlamaya çalıştım ama sonuç alamıyorum
sonuçlar N2:N7 arasına yazılcak ama bi türlü yapamadım dosyayı gönderiyorum
ekleyeceğim notlar ilk sizden gelen çalışmada 5 sonuç çıkıyodu şimdikinde 6 sonuç
 

Ekli dosyalar

sayın hocam makrolu çözümleri tam anlayamadığımdan kaynaklanıyo herhalde ama tuhaf bi durum var

hatalı dediğim yani sonuçları göremediğim açık halde duran excel dosyam (sadece sayfa1 var)
satır ve sütun yükseklileri gibi değerlerle oynarken birden doğru yanıtlar gri renkli hanelere döndü

bu nasıl bi durum
ben ne yaptığımı anlatayım boş dosya açtım sayfa 2 ve sayfa 3 ü sildim kalan sayfa 1 e sağ tıkladım mod görüntüle ve açılan pencereye sizden gelen ilk kodu yazım üzerinde verileri sildim ekledim vs en sonda End Sub yani bitiş kısmının yanına mouseyi getirdim ve enter dedim ve kod yazdığım pencereyi kapadım. o anda sonuçlar gelmedi.
 
Size kullanacı tanımlı bir fonksiyon yaptım.
formül şöyle,C5:I23 aralık,K7 ise kriter.Kodlarda aşağıda.Kullanacağınız doysyaya bir modüle o kodların olması lazım.Kopyalayın yani.Ama bu dosya için gerek yok.
=uyanlari_topla($C$5:$I$23;K7)
KTF:
Kod:
Function uyanlari_topla(alan As Range, olcut As String) As Double
Dim tpl As Double, hcr As Range
For Each hcr In alan
    If hcr.Value = olcut Then
        tpl = tpl + hcr.Offset(0, 1).Value
    End If
Next
uyanlari_topla = tpl
End Function
 

Ekli dosyalar

Selamlar,

Aşağıdaki formülü L7 hücresine uygulayıp denermisiniz.
Dizi formüldür. CTRL+SHIFT+ENTER ile tamamlayın.

Kod:
=TOPLA(EĞER($C$5:$H$23=$K7;$D$5:$I$23))
 
Sayın Korhan Hocam çözümünüz için teşekkür ettim. formül çok tuhaf geldi bana ama br o kadarda kolaymış
peki hocam eğer verileri kriterin bi soluna
bir alt yada
bir üst hücreye yazmama göre olması gereken formülleri da yazabilirmisiniz
 
Sayın Korhan hocam formülü irdeledim ve sorduğum diğer seçenekleri kendim dönüşütürdüm.
güzel bi mantık var formülde
teşekkür ettim.
 
Geri
Üst