• DİKKAT

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

Birden Fazla Hareketi Tek Sayma

Katılım
15 Nisan 2010
Mesajlar
111
Excel Vers. ve Dili
2003
Merhaba,

Ekteki tabloda birden aynı gün içerisinde birden fazla hareketi olan kişinin günü
tek olarak saymasını ve kişinin kaç günü olduğunun toplamını almasını nasıl sağlarım.
Teşekkürler.
 

Ekli dosyalar

Usta cevap için sağol ama o hücrede halletmem gerekiyor zaten tablom çok hem satır hem sütun olarak. Eğer yolu varsa yardımcı olan olursa sevinirim.
 
Deneyiniz.

DİZİ formüldür. CTRL+SHIFT+ENTER ile formül girişini tamamlayınız.

Kod:
=TOPLA(--(SIKLIK(EĞER($A$3:$A$18=F3;EĞER($B$3:$B$18=G3;KAÇINCI($C$3:$C$18;$C$3:$C$18;0)));KAÇINCI($C$3:$C$18;$C$3:$C$18;0))>0))
 
Alternatif dizi formülü,

Kod:
=TOPLA.ÇARPIM(--(SIKLIK(EĞERHATA(KAÇINCI($F3&$G3&$C$3:$C$18;$A$3:$A$18&$B$3:$B$18&$C$3:$C$18;0);"");SATIR(B2:B17)-2)>0))
 
Sn. Kuvari,

Dizi formül kullanacaksanız TOPLA.ÇARPIM yazmanın pek fazla esprisi kalmıyor. TOPLA yazarak formülü biraz daha kısaltabilirsiniz.
 
Sn. Kuvari,

Dizi formül kullanacaksanız TOPLA.ÇARPIM yazmanın pek fazla esprisi kalmıyor. TOPLA yazarak formülü biraz daha kısaltabilirsiniz.

Korhan hocam merhaba,

Başka bir yöntem deniyordum, dizi formülü olması gerek olmayan.YOK hatasından kurtulmak için yine dizi formülü gerekti, bende değiştirmedim.
 
Merhaba,

Dizi formülü olmayan alternatif,

Kod:
=TOPLA.ÇARPIM(--(EĞER(SIKLIK(KAÇINCI($F3&$G3&DOLAYLI("$C$3:$C$"&TOPLA.ÇARPIM(--(MAK(--($B$3:$B$18=$G3)*(SATIR($C$3:$C$18))))));$A$3:$A$18&$B$3:$B$18&$C$3:$C$18;0);SATIR(C3:C18));1)))
 
Merhabalar,
TOPLA.ÇARPIM formülünü diziye çevirmeden farklı bir alternatif;
Kod:
=TOPLA.ÇARPIM(((SATIR(A3:A6)-2)=KAÇINCI(C3:C6;C3:C6;))*
  (A3:A6=F3)*(B3:B6=G3))

Kod:
=BAĞ_DEĞ_SAY(1/SIKLIK((A3:A6=[COLOR="Red"]F3[/COLOR])*(C3:C6);(B3:B6=[COLOR="Red"]G3[/COLOR])*(C3:C6)))
hücre refaransını yanlış yazdığımdan -1 silinmiştir.

Not: Diğer formülleri pek incelemedim hücre referasları yanlış anlamış olabilirim.
 
Son düzenleme:
üstatlar cevaplar için teşekkürker. Bu formüllerden hangisini vba da hesaplatarak sadece değeri yazdırabilirim. Hücrede formül olmadan sadece değer yazmasını nasıl sağlarım.
 
Sn. bzace,

Verdiğiniz formüller doğru sonucu vermiyor. Kontrol edermisiniz.
 
Örnek dosyanıza göre aşağıdaki kodu deneyebilirsiniz.

Kod:
Sub Test()
    Range("H3:H5").ClearContents
    Range("H3").FormulaArray = "=SUM(--(FREQUENCY(IF($A$3:$A$18=F3,IF($B$3:$B$18=G3,MATCH($C$3:$C$18,$C$3:$C$18,0))),MATCH($C$3:$C$18,$C$3:$C$18,0))>0))"
    With Range("H3:H5")
        .FillDown
        .Value = .Value
    End With
End Sub
 
Üstat çözüm teşekkürler ama hesapladığı değeri tüm hücrelere aynı toplamı yazıyor ilk satırdaki toplamı tüm satırlara yazıyor çözümü varmı.


Örnek dosyanıza göre aşağıdaki kodu deneyebilirsiniz.

Kod:
Sub Test()
    Range("H3:H5").ClearContents
    Range("H3").FormulaArray = "=SUM(--(FREQUENCY(IF($A$3:$A$18=F3,IF($B$3:$B$18=G3,MATCH($C$3:$C$18,$C$3:$C$18,0))),MATCH($C$3:$C$18,$C$3:$C$18,0))>0))"
    With Range("H3:H5")
        .FillDown
        .Value = .Value
    End With
End Sub
 
Dosyanızdaki hesaplama yöntemini otomatik olarak ayarladıktan sonra kodu çalıştırın.
 
Korhan hocam bu formülü ("H3:H5") arası değilde h3 ten başlayarak son dolu satıra kadar nasıl uygulatabiliriz.

Örnek dosyanıza göre aşağıdaki kodu deneyebilirsiniz.

Kod:
Sub Test()
    Range("H3:H5").ClearContents
    Range("H3").FormulaArray = "=SUM(--(FREQUENCY(IF($A$3:$A$18=F3,IF($B$3:$B$18=G3,MATCH($C$3:$C$18,$C$3:$C$18,0))),MATCH($C$3:$C$18,$C$3:$C$18,0))>0))"
    With Range("H3:H5")
        .FillDown
        .Value = .Value
    End With
End Sub
 
Korhan Bey,
1. formülde herhangi bir sıkıntı olmaması gerekiyor.
2. formülde hücre referansını yanlış yazmışım gerekli düzeltme yapıldı.

Sonuçlar sizin önerdiğiniz formül ile aynı sonucu verecektir.
 
Aşağıdaki kodu deneyiniz.

Kod:
Sub Test()
    Son = Cells(Rows.Count, "H").End(3).Row
    If Son >= 3 Then
        Range("H3:H" & Son).ClearContents
        Range("H3").FormulaArray = "=IFERROR(SUM(--(FREQUENCY(IF($A$3:$A$18=F3,IF($B$3:$B$18=G3,MATCH($C$3:$C$18,$C$3:$C$18,0))),MATCH($C$3:$C$18,$C$3:$C$18,0))>0)),"""")"
        With Range("H3:H" & Son)
            .FillDown
            .Value = .Value
        End With
    End If
End Sub
 
Sn. bzace,

Son verdiğiniz şekilde formüllerinizi aşağıdaki gibi uyguladım.

Kod:
=TOPLA.ÇARPIM(((SATIR($A$3:$A$18)-2)=KAÇINCI($C$3:$C$18;$C$3:$C$18;))*($A$3:$A$18=F3)*($B$3:$B$18=G3))

Bu haliyle TOPLA.ÇARPIM çözümünü ilk hücrede doğru sonucu verdi. Fakat alttaki iki hücrede sıfır değeri üretti.

Diğer önerinizi aşağıdaki şekle çevirdim.

Kod:
=BAĞ_DEĞ_SAY(1/SIKLIK(($A$3:$A$18=F3)*($C$3:$C$18);($B$3:$B$18=G3)*($C$3:$C$18)))

Bu formülde hep bir fazla sonuç üretti. Yani 3,2,2 üretmesi gerekirken 4,3,3 olarak sonuç verdi.
 
Geri
Üst