• DİKKAT

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

Farklı Sayfalarda Birbirinden Farklı Sayı Adedini Bulmak

Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Merhaba Arkadaşlar,

Farklı sayfalarda A sütununda sayılar ve metinsel ifadeler bulunmaktadır. Örnek dosyayı ekledim. Toplam sayı adedini bulabiliyorum.
Kaç adet birbirinden farklı sayı adedini bulmak mümkün mü ?
 

Ekli dosyalar

Yardımcı bir sütun kullanın;
A1 boş ve verilerinizin A2 den başladığını varsayıyorum.
Boş bir sütunun 2 satırına (örneğin C sütunu) yani C2 ye aşağıdaki kodu yapıştırıp, A sütunundaki son dolu satıra kadar aşağı doğru çoğaltın.

=EĞERSAY(A$1:A1;A2)

Sonrasında C1 hücresine aşağıdaki kodu yapıştırın;

=EĞERSAY(C2:C1000;0)

Sütun adını kendi kullandığınız sütun adıyla değiştirin. 1000 rakamını da A sütunundaki son dolu satır sayısı yapın.
 
Yardımcı bir sütun kullanın;
A1 boş ve verilerinizin A2 den başladığını varsayıyorum.
Boş bir sütunun 2 satırına (örneğin C sütunu) yani C2 ye aşağıdaki kodu yapıştırıp, A sütunundaki son dolu satıra kadar aşağı doğru çoğaltın.

=EĞERSAY(A$1:A1;A2)

Sonrasında C1 hücresine aşağıdaki kodu yapıştırın;

=EĞERSAY(C2:C1000;0)

Sütun adını kendi kullandığınız sütun adıyla değiştirin. 1000 rakamını da A sütunundaki son dolu satır sayısı yapın.
leguminosea ilgine çok teşekkür ederim. Bu formül ile tüm sayfalarda kaç adet benzersiz sayı olduğunu bulabilecek miyiz ?
 
Bu sadece kullanığınız sayfadaki benzersizleri bulacaktır.
Her sayfaya uygulamanız gerekecek.
Ya da en iyisi bunları saydırmak için ayrı bir sayfa açın.
A sütunundan başlamak üzere her sütun ayrı bir sayfanın hesabını yapacak şekilde ayarlayın.
 
Bu sadece kullanığınız sayfadaki benzersizleri bulacaktır.
Her sayfaya uygulamanız gerekecek.
Ya da en iyisi bunları saydırmak için ayrı bir sayfa açın.
A sütunundan başlamak üzere her sütun ayrı bir sayfanın hesabını yapacak şekilde ayarlayın.
Çok teşekkür ederim. Evet o da ara çözüm olabilir. Ama bir handikabı var : aynı veri farklı sayfalarda varsa ki bizim örnekte çok sıklıkla var, o zaman aynı veriyi bulunduğu her sayfada sayacağı için çok pratik olmayacak gibi.
 
Altın üye olmadığım için dosyanızı göremiyorum.
Harici bir siteye yüklermisiniz.
(dosyaupload.com , dosya.tc gibi)
 
Selamlar, linkteki çözümü kullanabilirsiniz.
Üstad çok teşekkürler. Bu link faydalı oldu ve aşağıdaki formül ile istediğimi elde ettim.
=TOPLA(EĞER(SIKLIK(ANKARA:MUĞLA!A1:A10;ANKARA:MUĞLA!A1:A10)>0;1))

Amaaa :) ANKARA ve MUĞLA tanımlarını hücreden belirlemek istediğimizde DOLAYLI formülü ve DİZİ formatı ve düz format ile olmuyor. Sadece formülün içine yazarak yapabildim. Ancak sayfa isimleri değişken.
 
Ekteki dosyayı inceleyiniz.

Kullanıcı Tanımlı Fonksiyon (KTF) kullanılmıştır.

Fonksiyonda 3 parametre vardır.

Sayfalar (Sayfa isimlerinin bulunduğu hücreler)
Alan (Saydırılmak istenen hücre aralığı)
Kriter (0-1-2 değerleri kullanılabilir.)
"0" veri ayrımı (sayı-metin) yapmadan benzersiz sayımı yapar.
"1" sayısal verileri benzersiz sayar.
"2" metinsel verileri benzersiz sayar.
Kriter opsiyoneldir. Varsayılan olarak tüm verileri sayacak şekilde ayarlıdır.

Boş hücreler sayıma dahil edilmez.

=SAYFALARDA_BENZERSİZ_SAY(Sayfalar;Alan;Kriter)

C++:
Option Explicit

Function SAYFALARDA_BENZERSİZ_SAY(Sayfalar As Variant, Alan As Variant, Optional Kriter As Byte = 0)
    Dim Sayfa As Variant, Dizi As Object, Sh As Worksheet, X As Long, Veri As Variant
   
    Application.Volatile True
   
    Set Dizi = CreateObject("Scripting.Dictionary")
   
    For Each Sayfa In Sayfalar
        If Sayfa <> Empty Then
            Set Sh = Nothing
            Set Sh = Sheets(CStr(Sayfa))
            If Not Sh Is Nothing Then
                Veri = Sh.Range(Alan.Address).Value
                For X = LBound(Veri) To UBound(Veri)
                    If Veri(X, 1) <> Empty Then
                        Select Case Kriter
                            Case 0
                                If Not Dizi.Exists(Veri(X, 1)) Then
                                    Dizi.Add Veri(X, 1), Nothing
                                End If
                            Case 1
                                If IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                            Case 2
                                If Not IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                        End Select
                    End If
                Next
            End If
        End If
    Next
   
    SAYFALARDA_BENZERSİZ_SAY = Dizi.Count
   
    Set Sh = Nothing
    Set Dizi = Nothing
End Function
 

Ekli dosyalar

Ekteki dosyayı inceleyiniz.

Kullanıcı Tanımlı Fonksiyon (KTF) kullanılmıştır.

Fonksiyonda 3 parametre vardır.

Sayfalar (Sayfa isimlerinin bulunduğu hücreler)
Alan (Saydırılmak istenen hücre aralığı)
Kriter (0-1-2 değerleri kullanılabilir.)
"0" veri ayrımı (sayı-metin) yapmadan benzersiz sayımı yapar.
"1" sayısal verileri benzersiz sayar.
"2" metinsel verileri benzersiz sayar.
Kriter opsiyoneldir. Varsayılan olarak tüm verileri sayacak şekilde ayarlıdır.

Boş hücreler sayıma dahil edilmez.

=SAYFALARDA_BENZERSİZ_SAY(Sayfalar;Alan;Kriter)

C++:
Option Explicit

Function SAYFALARDA_BENZERSİZ_SAY(Sayfalar As Variant, Alan As Variant, Optional Kriter As Byte = 0)
    Dim Sayfa As Variant, Dizi As Object, Sh As Worksheet, X As Long, Veri As Variant
  
    Application.Volatile True
  
    Set Dizi = CreateObject("Scripting.Dictionary")
  
    For Each Sayfa In Sayfalar
        If Sayfa <> Empty Then
            Set Sh = Nothing
            Set Sh = Sheets(CStr(Sayfa))
            If Not Sh Is Nothing Then
                Veri = Sh.Range(Alan.Address).Value
                For X = LBound(Veri) To UBound(Veri)
                    If Veri(X, 1) <> Empty Then
                        Select Case Kriter
                            Case 0
                                If Not Dizi.Exists(Veri(X, 1)) Then
                                    Dizi.Add Veri(X, 1), Nothing
                                End If
                            Case 1
                                If IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                            Case 2
                                If Not IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                        End Select
                    End If
                Next
            End If
        End If
    Next
  
    SAYFALARDA_BENZERSİZ_SAY = Dizi.Count
  
    Set Sh = Nothing
    Set Dizi = Nothing
End Function
Korhan Ayhan üstadım çok teşekkür ederim. Hem formül hem de KTF olarak harika 2 alternatif oldu. Sağlıcakla kalın.
 
Ekteki dosyayı inceleyiniz.

Kullanıcı Tanımlı Fonksiyon (KTF) kullanılmıştır.

Fonksiyonda 3 parametre vardır.

Sayfalar (Sayfa isimlerinin bulunduğu hücreler)
Alan (Saydırılmak istenen hücre aralığı)
Kriter (0-1-2 değerleri kullanılabilir.)
"0" veri ayrımı (sayı-metin) yapmadan benzersiz sayımı yapar.
"1" sayısal verileri benzersiz sayar.
"2" metinsel verileri benzersiz sayar.
Kriter opsiyoneldir. Varsayılan olarak tüm verileri sayacak şekilde ayarlıdır.

Boş hücreler sayıma dahil edilmez.

=SAYFALARDA_BENZERSİZ_SAY(Sayfalar;Alan;Kriter)

C++:
Option Explicit

Function SAYFALARDA_BENZERSİZ_SAY(Sayfalar As Variant, Alan As Variant, Optional Kriter As Byte = 0)
    Dim Sayfa As Variant, Dizi As Object, Sh As Worksheet, X As Long, Veri As Variant
  
    Application.Volatile True
  
    Set Dizi = CreateObject("Scripting.Dictionary")
  
    For Each Sayfa In Sayfalar
        If Sayfa <> Empty Then
            Set Sh = Nothing
            Set Sh = Sheets(CStr(Sayfa))
            If Not Sh Is Nothing Then
                Veri = Sh.Range(Alan.Address).Value
                For X = LBound(Veri) To UBound(Veri)
                    If Veri(X, 1) <> Empty Then
                        Select Case Kriter
                            Case 0
                                If Not Dizi.Exists(Veri(X, 1)) Then
                                    Dizi.Add Veri(X, 1), Nothing
                                End If
                            Case 1
                                If IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                            Case 2
                                If Not IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                        End Select
                    End If
                Next
            End If
        End If
    Next
  
    SAYFALARDA_BENZERSİZ_SAY = Dizi.Count
  
    Set Sh = Nothing
    Set Dizi = Nothing
End Function
Üstadım, aşağıdaki formülde sayfa isimlerini hücreden referansklı yapmak mümkün müdür ?
=TOPLA.ÇARPIM(--(SIKLIK(ANKARA:MUĞLA!A1:A20;ANKARA:MUĞLA!A1:A20)<>0))
 
Ben o kısmı için bir çözüm bulamadım. Bulursam paylaşırım.
 
Ekteki dosyayı inceleyiniz.

Kullanıcı Tanımlı Fonksiyon (KTF) kullanılmıştır.

Fonksiyonda 3 parametre vardır.

Sayfalar (Sayfa isimlerinin bulunduğu hücreler)
Alan (Saydırılmak istenen hücre aralığı)
Kriter (0-1-2 değerleri kullanılabilir.)
"0" veri ayrımı (sayı-metin) yapmadan benzersiz sayımı yapar.
"1" sayısal verileri benzersiz sayar.
"2" metinsel verileri benzersiz sayar.
Kriter opsiyoneldir. Varsayılan olarak tüm verileri sayacak şekilde ayarlıdır.

Boş hücreler sayıma dahil edilmez.

=SAYFALARDA_BENZERSİZ_SAY(Sayfalar;Alan;Kriter)

C++:
Option Explicit

Function SAYFALARDA_BENZERSİZ_SAY(Sayfalar As Variant, Alan As Variant, Optional Kriter As Byte = 0)
    Dim Sayfa As Variant, Dizi As Object, Sh As Worksheet, X As Long, Veri As Variant
  
    Application.Volatile True
  
    Set Dizi = CreateObject("Scripting.Dictionary")
  
    For Each Sayfa In Sayfalar
        If Sayfa <> Empty Then
            Set Sh = Nothing
            Set Sh = Sheets(CStr(Sayfa))
            If Not Sh Is Nothing Then
                Veri = Sh.Range(Alan.Address).Value
                For X = LBound(Veri) To UBound(Veri)
                    If Veri(X, 1) <> Empty Then
                        Select Case Kriter
                            Case 0
                                If Not Dizi.Exists(Veri(X, 1)) Then
                                    Dizi.Add Veri(X, 1), Nothing
                                End If
                            Case 1
                                If IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                            Case 2
                                If Not IsNumeric(Veri(X, 1)) Then
                                    If Not Dizi.Exists(Veri(X, 1)) Then
                                        Dizi.Add Veri(X, 1), Nothing
                                    End If
                                End If
                        End Select
                    End If
                Next
            End If
        End If
    Next
  
    SAYFALARDA_BENZERSİZ_SAY = Dizi.Count
  
    Set Sh = Nothing
    Set Dizi = Nothing
End Function
Korhan Bey, emeğinize sağlık. İnanılmaz faydalı oldu.
 
Geri
Üst