Soru Aynı sütunda farklı olan verilerin sayısını bulma

Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Merhaba
VBA ile olmak üzere "A" sütununda yazılı olan farklı isimleri saydırmak istiyorum.
Yardımınız için şimdide teşekkür ederim.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,895
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Kod:
Sub Benzersizsay()
Dim LstRw As Long, Rng As Range, List As Object
LstRw = Cells(Rows.Count, "A").End(xlUp).Row
Set List = CreateObject("Scripting.Dictionary")

For Each Rng In Range("A2:A" & LstRw)
  If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
Next
MsgBox List.Count & " adet benzersiz veri var"
End Sub
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
@Ali Hocam Selam,
Peki aşağıdaki görseldeki gibi toplama işlemi yaptırmak istesek; (toplamları B sütununa yazdırsın)
VBA Kodu için yardımcı olabilir misiniz?
Teşekkürler, iyi çalışmalar.

237203
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
@Ali Hocam Tekrar Selam,
Farklı bir örnek olarak ve bilgi edinmek maiyetinde vede formu zenginleştirmek açısından;

1>>>
237205

2>>>
237206

Yukarda gerek alfabetik gerekse numaratik tablolardan butona tıkladığımızda karşımıza bir kutu açılsa ve kutuya örneğin KASTAMONU yazsak ve son satıra KASTAMONU dan kaç tane var toplamanı yazsa ve aynı şekilde numaratik olarak plakaları örnek aldım yine karşımıza bir kutu açılsa ve kutuya 37 yazsak son satıra 37 rakamından kaç tane içeriyor onu yazsa gibi gibi mümkün müdür?

Son olarak numaratiki dikkate aldığımızda kaç tane değilde 37 den kaç tane var ise toplamanı yazdırmamız mümkün müdür?
Ama dediğim gibi butona tıkladığımızda bir kutu açılacak ve kutuya biz istediğimiz veriyi yazacağız ve yazdığımız verinin bilgisini verecek bize!

3 nolu ve 4 nolu mesajım ihtiyaçtan değil formda bulunması açısından örnek maiyetinde paylaşılmıştır. Olursa güzel bir örnek olur diye düşündüm.

İyi çalışmalar.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ali Beyin örnek dosyasını baz alarak, alternatif kod;

C#:
Sub Test()
'   Haluk - 15/06/2022
'   sa4truss@gmail.com
    Dim DB As Object, RS As Object, strSQL As String
   
    Sheets("Sayfa1").Range("D2:E" & Rows.Count).ClearContents
   
    Set DB = CreateObject("DAO.DBEngine.120").OpenDatabase(ThisWorkbook.FullName, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
   
    strSQL = "Select [İLLER], Sum([TOPLA]) From [Sayfa1$] Where [İLLER] Is Not Null Group By [İLLER]"
   
    Set RS = DB.OpenRecordset(strSQL)
    Sheets("Sayfa1").Range("D2").CopyFromRecordset RS
End Sub

İlaveten;

Bu tür bir tablo için Pivot Tablo veya aşağıdaki animasyonda görüldüğü gibi yine Excel'in yerleşik fonksiyonu olan "Consolidate" kullanılabilir.


Test.gif


.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Haluk üstadım gözümüzün önünde duran ama şimdiye kadar ne olduğunu merak bile etmediğim güzel bir özelliği öğretmiş sağolsun.
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
Dönüş yapan bütün hocalarıma teşekkürler.
@Haluk hocam sayende bir bilinmeyeni daha öğrenmiş olduk. @YUSUF44 hocamın da dediği gibi gözümüzün önünde duran fakat bir kere bu ne diye merak edip bakmadığımız güzel bir özelliği öğrenmiş olduk.
Saygılar...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sütundaki benzersiz sayısının tespiti için alternatif;

C++:
Option Explicit

Sub Benzersiz_Say()
    Dim Say As Long, Son As Long, Formul As String
    
    Son = Cells(Rows.Count, 1).End(3).Row
    
    Formul = "=SUM(IF(FREQUENCY(IFERROR(MATCH(A1:A1048576,A1:A1048576,0),""""),IFERROR(MATCH(A1:A1048576,A1:A1048576,0),""""))>0,1))"
    Formul = Replace(Formul, 1048576, Son)
    
    Say = Evaluate(Formul)

    MsgBox "A sütunundaki benzersiz veri sayısı ; " & vbCrLf & vbCrLf & Say
End Sub
 

cakto

Altın Üye
Katılım
2 Ekim 2011
Mesajlar
45
Excel Vers. ve Dili
2010 türkçe
Altın Üyelik Bitiş Tarihi
25-11-2026
Ali Beyin örnek dosyasını baz alarak, alternatif kod;

C#:
Sub Test()
'   Haluk - 15/06/2022
'   sa4truss@gmail.com
    Dim DB As Object, RS As Object, strSQL As String
  
    Sheets("Sayfa1").Range("D2:E" & Rows.Count).ClearContents
  
    Set DB = CreateObject("DAO.DBEngine.120").OpenDatabase(ThisWorkbook.FullName, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
  
    strSQL = "Select [İLLER], Sum([TOPLA]) From [Sayfa1$] Where [İLLER] Is Not Null Group By [İLLER]"
  
    Set RS = DB.OpenRecordset(strSQL)
    Sheets("Sayfa1").Range("D2").CopyFromRecordset RS
End Sub

İlaveten;

Bu tür bir tablo için Pivot Tablo veya aşağıdaki animasyonda görüldüğü gibi yine Excel'in yerleşik fonksiyonu olan "Consolidate" kullanılabilir.


Ekli dosyayı görüntüle 237210


.
Ekte istediğiniz gibi bir örnek hazırladım.
Bu dosya benimde işime yarıyor. Bir kolon daha ekleyerek ilgili satırın kaç kere tekrarlandığını da yazabilir miyiz
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
@Ali ve @Korhan Ayhan hocalarım sorumu yanıtlamışlar çok teşekkür ederim.
 
Üst