- Katılım
- 2 Mart 2005
- Mesajlar
- 2,960
- Excel Vers. ve Dili
-
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sayın Ferhat Hocamın yapmış olduğu benzersiz kayıtları bulan diziyi biraz değiştirerek kendi ihtiyaçlarım doğrultusunda geliştirdim.
Fonksiyon bir aralıktaki benzersiz kayıtları diziye alıyor mesala
a1:a10 aralığındaki verilerimiz
Mustafa Iş., Ali KARAT…, Hüseyin KAP…, Hasan GEÇ……, Elif KO….., İsmet Yaş.. OKÇ……., Hasan KAP….., Hüseyin KAR………, Mehmet ÖZ…., Hasan GAÇ……,
ise diziye alındığındaki görüntü
Ali KARAT…, Elif KO….., Hasan GAÇ……, Hasan GEÇ……, Hasan KAP….., Hüseyin KAP…, Hüseyin KAR………, İsmet Yaş.. OKÇ……., Mehmet ÖZ…., Mustafa Iş.,
bu şekilde alfabetik sıralama yapılabilirmi
Fonksiyon bir aralıktaki benzersiz kayıtları diziye alıyor mesala
a1:a10 aralığındaki verilerimiz
Mustafa Iş., Ali KARAT…, Hüseyin KAP…, Hasan GEÇ……, Elif KO….., İsmet Yaş.. OKÇ……., Hasan KAP….., Hüseyin KAR………, Mehmet ÖZ…., Hasan GAÇ……,
ise diziye alındığındaki görüntü
Ali KARAT…, Elif KO….., Hasan GAÇ……, Hasan GEÇ……, Hasan KAP….., Hüseyin KAP…, Hüseyin KAR………, İsmet Yaş.. OKÇ……., Mehmet ÖZ…., Mustafa Iş.,
bu şekilde alfabetik sıralama yapılabilirmi
Kod:
Function Benzersiz_Kayit(Aralik As Range, Sira As Integer, _
Optional ByVal Kayıtlar As Boolean = True)
'Elemanları hücreye yazmak için
'VBA da : Benzersiz_Kayit(Aralik, i + 1) şeklinde kullanmalısınız. Sırano 1 den başlar.
'Excel de : =Benzersiz_Kayit(Sayfa3!$C$3:$C$23;SATIR()-1) şeklinde kullanabilirsiniz.
'Dikkat Aralığın son hücresini diekkate almıyor Sayfa3!$C$3:$C$23 yazımı aslında Sayfa3!$C$3:$C$22 ye kadar ?????
''Eleman sayısını öğrenmek için
'VBA da : Benzersiz_Kayit(Aralik, 1, False) şeklinde kullanmalısınız. Sıra no olarak 1 kullanın
'Excel de : =Benzersiz_Kayit(Sayfa3!$C$3:$C$23;1;0) şeklinde kullanbilirsiniz.
Dim hcr As Range
Dim arrVeri()
Dim i&, j&, x&, y&
For Each hcr In Aralik.Cells
i = i + 1
If i = 1 Then
ReDim Preserve arrVeri(y)
arrVeri(y) = ucasetr(hcr)
Else
For j = 0 To UBound(arrVeri)
If ucasetr(hcr) = arrVeri(j) Then: x = x + 1
Next j
If x = 0 Then
y = y + 1
ReDim Preserve arrVeri(y)
arrVeri(y) = ucasetr(hcr)
End If
x = 0
End If
Next
If Kayıtlar = True Then
If Sira > UBound(arrVeri) Then
'Exit Sub
Benzersiz_Kayit = ""
Else
Benzersiz_Kayit = arrVeri(Sira - 1)
End If
Else
Benzersiz_Kayit = UBound(arrVeri)
End If
End Function
Kod:
Function UCaseTr(ByVal metin As String)
UCaseTr = UCase(Replace(Replace(metin, "ı", "I"), "i", "İ"))
End Function
Son düzenleme: