yasin85
Altın Üye
- Katılım
- 29 Haziran 2011
- Mesajlar
- 264
- Excel Vers. ve Dili
- 2019, Türkçe
- Altın Üyelik Bitiş Tarihi
- 25-08-2026
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Merhaba,
Gönüllü olarak, işinden, özel zamanından vakit ayırıp size yardımcı olacak kişileri uğraştırmamak adına, örnek dosya eklemeyi alışkanlık hâline getirelim. Sonrasında herkes elinden geldiğince yardımcı olacaklardır.
Saygılar
Sub TEST()
For i = 2 To Cells(Rows.Count, 1).End(3).Row
bl = Split(Cells(i, 1))
For ii = LBound(bl) To UBound(bl) - 1
al = bl(ii)
If Not IsNumeric(al) Then
For iii = ii + 1 To UBound(bl)
If al = bl(iii) Then bl(iii) = ""
Next iii
End If
Next ii
Cells(i, 2) = WorksheetFunction.Trim(Join(bl))
Next i
End Sub
Option Explicit
Sub Metin_Icindeki_Tekrar_Edenleri_Kaldir()
Dim Dizi As Object, Veri As Variant, Son As Long, X As Long, Say As Long
Dim Metin As Variant, Y As Integer, Ek As Integer, Sonuc As String, Zaman As Double
Zaman = Timer
Set Dizi = CreateObject("Scripting.Dictionary")
Son = Cells(Rows.Count, 1).End(3).Row
If Son = 1 Then Son = 2
Veri = Range("A1:A" & Son).Value
ReDim Liste(1 To UBound(Veri), 1 To 1)
For X = LBound(Veri) To UBound(Veri)
If Veri(X, 1) <> "" Then
Metin = Split(Veri(X, 1), " ")
For Y = LBound(Metin) To UBound(Metin)
If Not IsNumeric(Metin(Y)) Then
If Not Dizi.Exists(Metin(Y)) Then Dizi.Add Metin(Y), Nothing
Else
Ek = Ek + 1
Dizi.Add Metin(Y) & "|" & Ek, Nothing
End If
Next
Sonuc = Join(Dizi.Keys, " ")
Dizi.RemoveAll
For Y = Ek To 1 Step -1
Sonuc = Replace(Sonuc, "|" & Y, "")
Next
Ek = 0
Say = Say + 1
Liste(Say, 1) = Sonuc
Sonuc = ""
End If
Next
If Say > 0 Then Range("B1").Resize(Say, 1) = Liste
Set Dizi = Nothing
MsgBox "Tekrar eden veriler temizlenmiştir." & Chr(10) & Chr(10) & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
sn. @veyselemre emeğiniz için teşekkür ederim çok işime yarayacak bir çalışma oldu.Örnek dosya yok, hücre içerisinde alt+enter kullanıldıysa hatalı sonuç verecektir.
Kod:Sub TEST() For i = 2 To Cells(Rows.Count, 1).End(3).Row bl = Split(Cells(i, 1)) For ii = LBound(bl) To UBound(bl) - 1 al = bl(ii) If Not IsNumeric(al) Then For iii = ii + 1 To UBound(bl) If al = bl(iii) Then bl(iii) = "" Next iii End If Next ii Cells(i, 2) = WorksheetFunction.Trim(Join(bl)) Next i End Sub
sn. @Korhan Ayhan zaman ayırıp destek olduğunuz için sizlere çok teşekkür ederim sizin dosyanızıda ekledim denemek isteyen olursa diye bu işlem haftada toplama vurduğumuzda en az 5 - 6 saatimizi alıyordu böyle bir iş yükü üstümüzden kalktı şuanda.Altenatif;
C++:Option Explicit Sub Metin_Icindeki_Tekrar_Edenleri_Kaldir() Dim Dizi As Object, Veri As Variant, Son As Long, X As Long, Say As Long Dim Metin As Variant, Y As Integer, Ek As Integer, Sonuc As String, Zaman As Double Zaman = Timer Set Dizi = CreateObject("Scripting.Dictionary") Son = Cells(Rows.Count, 1).End(3).Row If Son = 1 Then Son = 2 Veri = Range("A1:A" & Son).Value ReDim Liste(1 To UBound(Veri), 1 To 1) For X = LBound(Veri) To UBound(Veri) If Veri(X, 1) <> "" Then Metin = Split(Veri(X, 1), " ") For Y = LBound(Metin) To UBound(Metin) If Not IsNumeric(Metin(Y)) Then If Not Dizi.Exists(Metin(Y)) Then Dizi.Add Metin(Y), Nothing Else Ek = Ek + 1 Dizi.Add Metin(Y) & "|" & Ek, Nothing End If Next Sonuc = Join(Dizi.Keys, " ") Dizi.RemoveAll For Y = Ek To 1 Step -1 Sonuc = Replace(Sonuc, "|" & Y, "") Next Ek = 0 Say = Say + 1 Liste(Say, 1) = Sonuc Sonuc = "" End If Next If Say > 0 Then Range("B1").Resize(Say, 1) = Liste Set Dizi = Nothing MsgBox "Tekrar eden veriler temizlenmiştir." & Chr(10) & Chr(10) & _ "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation End Sub
sn. @kulomer46 ilginiz için teşekkür ederim.Merhaba
İsterseniz makrolu çözüm yazabilirim.
Sadece fonksiyonlu çözüm istiyorsanız şu an aklıma bir şey gelmiyor.
Selamlar...
Selamlar...sn. @kulomer46 ilginiz için teşekkür ederim.
Fonksiyonla ile ola bilecek bir çalışma olduğunu düşündüğüm için fonksiyon alanına ekledim, makro ile değerli vakitlerini harcamasınlar diye sağolsunlar desteklerini esirgemediler..
Option Explicit
Sub Metin_Icindeki_Tekrar_Edenleri_Kaldir()
Dim Dizi As Object, Veri As Variant, Son As Long, X As Long, Say As Long
Dim Metin As Variant, Y As Integer, Ek As Integer, Sonuc As String, Zaman As Double
Zaman = Timer
Set Dizi = CreateObject("Scripting.Dictionary")
Son = Cells(Rows.Count, 1).End(3).Row
If Son = 1 Then Son = 2
Veri = Range("A1:A" & Son).Value
ReDim Liste(1 To UBound(Veri), 1 To 1)
For X = LBound(Veri) To UBound(Veri)
If Veri(X, 1) <> "" Then
Metin = Split(WorksheetFunction.Trim(Replace(Veri(X, 1), Chr(160), "")), " ")
For Y = LBound(Metin) To UBound(Metin)
If Not IsNumeric(Metin(Y)) Then
If Not Dizi.Exists(Metin(Y)) Then Dizi.Add Metin(Y), Nothing
Else
Ek = Ek + 1
Dizi.Add Metin(Y) & "|" & Ek, Nothing
End If
Next
Sonuc = Join(Dizi.Keys, " ")
Dizi.RemoveAll
For Y = Ek To 1 Step -1
Sonuc = Replace(Sonuc, "|" & Y, "")
Next
Ek = 0
Say = Say + 1
Liste(Say, 1) = Sonuc
Sonuc = ""
End If
Next
If Say > 0 Then Range("B1").Resize(Say, 1) = Liste
Set Dizi = Nothing
MsgBox "Tekrar eden veriler temizlenmiştir." & Chr(10) & Chr(10) & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub