Benzersiz liste oluşturmak

Erdal

Altın Üye
Katılım
23 Ekim 2006
Mesajlar
1,047
Excel Vers. ve Dili
Ev: 2021 - Türkçe 32 Bit
İşyeri: 2016 - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
08-10-2029
Merhabalar
Bir tablodaki benzersiz verileri yan sütunda listelemek için ekteki örneğin H sütunundaki formülü kullanıyorum. Formül kısa tablolar için çalışıyor ama uzun tablolar için hatalı sonuç (B sütunu) üretiyor. Ama tablodaki değişik veri sayısını arttırırsam tekrar doğru sonuç (E sütunu) üretiyor. Acaba formülde neyi hatalı yapıyorum. Veya her türlü tabloda çalışan dinamik bir formül üretebilir miyiz? Ayrıntılı açıklama örnekte mevcuttur. Saygı ve selam ile …
 

Ekli dosyalar

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,677
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba,
Diziye çevirerek bu formülü deneyiniz.

C sütununda deneyiniz.
Kod:
=İNDİS($A$2:$A$120;KAÇINCI(0;EĞERSAY($C$1:C1;$A$2:$A$120);0))
 
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
Selamlar,

Altarnatif olarak aşagıdaki kodları kullanabilirsiniz,

Kod:
Option Explicit
 
Sub listele()
Dim S1 As Worksheet
Dim i As Long, son As Long, son1 As Long, son2 As Long, sat As Long
 
Set S1 = Sheets("Sayfa1")

Application.ScreenUpdating = False
 
son = S1.[a65536].End(3).Row

S1.Range("b2:b65536").ClearContents
S1.Range("e2:e65536").ClearContents
S1.Range("h2:h65536").ClearContents

sat = 1
For i = 2 To son

    If WorksheetFunction.CountIf(S1.Range("a2:a" & i), S1.Cells(i, "a")) = 1 Then
        sat = sat + 1
        S1.Cells(sat, "b") = S1.Cells(i, "a")
    End If
Next i

son1 = S1.[a65536].End(3).Row

sat = 1
For i = 2 To son

    If WorksheetFunction.CountIf(S1.Range("d2:d" & i), S1.Cells(i, "d")) = 1 Then
        sat = sat + 1
        S1.Cells(sat, "e") = S1.Cells(i, "d")
    End If
Next i

son2 = S1.[g65536].End(3).Row

sat = 1
For i = 2 To son

    If WorksheetFunction.CountIf(S1.Range("g2:g" & i), S1.Cells(i, "g")) = 1 Then
        sat = sat + 1
        S1.Cells(sat, "h") = S1.Cells(i, "g")
    End If
Next i

Application.ScreenUpdating = True

MsgBox "İşleminiz tamamlanmıştır", vbCritical

End Sub
 

Erdal

Altın Üye
Katılım
23 Ekim 2006
Mesajlar
1,047
Excel Vers. ve Dili
Ev: 2021 - Türkçe 32 Bit
İşyeri: 2016 - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
08-10-2029
Merhabalar
Vedat Bey kodlar için teşekkürler. Kodun işlevselliği açısından tablonun değişik adreslerde olması durumunda kodlarda değiştirilmesi gereken yerleri işaretleyebilir misiniz?
Mahir Bey
vermiş olduğunuz formül işe yarıyor fakat ekteki sayfa 2'deki durumda hata veriyor. Acaba nasıl düzeltebiliriz? Saygı ve selam ile ...
 

Ekli dosyalar

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
Selamlar,

Kod:
son = S1.[[B]a65536[/B]].End(3).Row

S1.Range("[B]b2:b65536[/B]").ClearContents

sat = 1
For i = 2 To son

    If WorksheetFunction.CountIf(S1.Range("[B]a2:a[/B]" & i), S1.Cells(i, "[B]a[/B]")) = 1 Then
        sat = sat + 1
        S1.Cells(sat, "[B]b[/B]") = S1.Cells(i, "[B]a[/B]")
    End If
Next i

A sütunu veri aralığı
B yeni liste
Bu şekilde anlaşılırmı ?
 
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
Selamlar,

Mahir beye vermiş oldugu formül için teşekkür ederim,

Aşagıdaki şekilde düzeltirmisiniz formülü,


Kod:
=İNDİS($A$2:$A$19;KAÇINCI(0;EĞERSAY($B$1:B1;$A$2:$A$19);0))
 

Erdal

Altın Üye
Katılım
23 Ekim 2006
Mesajlar
1,047
Excel Vers. ve Dili
Ev: 2021 - Türkçe 32 Bit
İşyeri: 2016 - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
08-10-2029
Vedat Bey
Kodlar için teşekkürler. Vermiş olduğunuz formül ile 4 nolu mesajımdaki örnekte sonuç alamadım. Acaba neyi yanlış yapıyorum? Saygı ve selam ile ...
 
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
Selamlar,


Ekdeki dosyayı inceleyin,


Dosyayı güncelledim
 

Ekli dosyalar

Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Formül hesaplama yaparken bir önce bulduğu veri üzerinden işlem yapmaktadır. Bu yüzden bi başlık satırı ekleyip formülü B2 den aşağıdaki gibi başlatın.

Kod:
=İNDİS($A$2:$A$19;KAÇINCI(0;EĞERSAY($B$1:B1;$A$2:$A$19);0))
.
 

Erdal

Altın Üye
Katılım
23 Ekim 2006
Mesajlar
1,047
Excel Vers. ve Dili
Ev: 2021 - Türkçe 32 Bit
İşyeri: 2016 - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
08-10-2029
Başlık satırı eklemeden bir çözüm yolu bulunabilir mi?
 

Erdal

Altın Üye
Katılım
23 Ekim 2006
Mesajlar
1,047
Excel Vers. ve Dili
Ev: 2021 - Türkçe 32 Bit
İşyeri: 2016 - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
08-10-2029
Teşekkür ederim Ömer Bey
 
Katılım
6 Mayıs 2011
Mesajlar
172
Excel Vers. ve Dili
TR
merhaba,

A SÜTUNUNA KARMA VERİLERİ GİRECEĞİNİZ SÜTUN OLSUN.
B1 HÜCRESİNE;
=EĞER(EĞERSAY(A1:$A$120;A1)=1;SATIR();"")

FORMÜLÜ YAZIN 120. SATIRA KADAR MAUS İLE SAĞ ALT OK A BASILI TUTARAK FORMÜLÜ ÇOĞALTMAK İÇİN ÇEKİN AŞAĞI. SONRADA BU SÜTUNU GİZLETİN.

C1 HÜCRESİNE;

=EĞER(EHATALIYSA(İNDİS(A:B;KÜÇÜK(B:B;SATIR());1));"";İNDİS(A:B;KÜÇÜK(B:B;SATIR());1))

FORMÜLÜ YAZIN 120. SATIRA KADAR ÇOĞALTIN ( MAUS İLE AĞAŞI ÇEKİN)

EĞER KARMA VERİLERİNİZ 120 SATIRDAN FAZLA İSE DİYELİM 250 ADET OLSUN,
BU DURUMDA $A$120 YERİNE $A$250 YAZIN.

HEPSİ BU...
 

Erdal

Altın Üye
Katılım
23 Ekim 2006
Mesajlar
1,047
Excel Vers. ve Dili
Ev: 2021 - Türkçe 32 Bit
İşyeri: 2016 - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
08-10-2029
Sn. ssdestek
Çok teşekkür ederim. ALLAH (c.c.) razı olsun.
 
Katılım
13 Eylül 2012
Mesajlar
97
Excel Vers. ve Dili
2007 türkçe
Altın Üyelik Bitiş Tarihi
19-07-2024
Merhaba,

Formül hesaplama yaparken bir önce bulduğu veri üzerinden işlem yapmaktadır. Bu yüzden bi başlık satırı ekleyip formülü B2 den aşağıdaki gibi başlatın.

Kod:
=İNDİS($A$2:$A$19;KAÇINCI(0;EĞERSAY($B$1:B1;$A$2:$A$19);0))
.


buna iki tarih arası şartı koyabilir misiniz. teşekkür ederim.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Sorunuzu örnek dosya ekleyerek detaylı açıklar mısınız.
 
Katılım
13 Eylül 2012
Mesajlar
97
Excel Vers. ve Dili
2007 türkçe
Altın Üyelik Bitiş Tarihi
19-07-2024
                       
                       
 
Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
G2 hücresine yazıp dizi formülüne çevirdikten sonra alt satırlara kopyalayınız.
Kod:
=EĞERHATA(İNDİS($B$2:$B$500;KÜÇÜK(EĞER(SIKLIK(EĞER($B$2:$B$500<>"";EĞER($A$2:$A$500>=$F$1;EĞER($A$2:$A$500<=$G$1
;KAÇINCI("~"&$B$2:$B$500;$B$2:$B$500&"";0))));SATIR($B$2:$B$500)-SATIR($B$2)+1);SATIR($B$2:$B$500)-SATIR($B$2)+1);SATIRSAY($G$2:G2)));"")
 
Katılım
13 Eylül 2012
Mesajlar
97
Excel Vers. ve Dili
2007 türkçe
Altın Üyelik Bitiş Tarihi
19-07-2024
G2 hücresine yazıp dizi formülüne çevirdikten sonra alt satırlara kopyalayınız.
Kod:
=EĞERHATA(İNDİS($B$2:$B$500;KÜÇÜK(EĞER(SIKLIK(EĞER($B$2:$B$500<>"";EĞER($A$2:$A$500>=$F$1;EĞER($A$2:$A$500<=$G$1
;KAÇINCI("~"&$B$2:$B$500;$B$2:$B$500&"";0))));SATIR($B$2:$B$500)-SATIR($B$2)+1);SATIR($B$2:$B$500)-SATIR($B$2)+1);SATIRSAY($G$2:G2)));"")

ilginizden ve yardımınızdan dolayı teşekkür ederim. Ömer Bey
 
Üst