baydeniro
Altın Üye
- Katılım
- 26 Ocak 2007
- Mesajlar
- 4,625
- Excel Vers. ve Dili
- Ofis 2016
- Altın Üyelik Bitiş Tarihi
- 20-02-2025
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
ilginize teşekkür ederim NextLEvel üstadım. Evet uzunluklar daima eşit olacak. Ama uzunlukların eşit olmama durumu kodlama açısından avantaj sağlıyorsa fark etmez.Uzunluklar da eşit olmak zorunda mı?
Sub Karşılaştır()
For i = 2 To Range("B" & Rows.Count).End(3).Row
If Len(Range("B" & i)) <> Len(Range("C" & i)) Then GoTo DEĞİL
For k = 1 To Len(Range("B" & i))
If Len(Replace(Range("B" & i), Mid(Range("B" & i), i, 1), "")) <> _
Len(Replace(Range("C" & i), Mid(Range("B" & i), i, 1), "")) Then GoTo DEĞİL
Next k
Range("D" & i) = "eşit"
GoTo DEVAM
DEĞİL:
Range("D" & i) = "değil"
DEVAM:
Next i
End Sub
üstad teşekkür ederim. Beklenen sonuç bu değil ama bu kodun da kullanılabileceği yerler hakkında çağrışım yaptı. teşekkür ederim.Deneyiniz. Hata varsa düzeltelim.
C++:Sub Karşılaştır() For i = 2 To Range("B" & Rows.Count).End(3).Row If Len(Range("B" & i)) <> Len(Range("C" & i)) Then GoTo DEĞİL For k = 1 To Len(Range("B" & i)) If Len(Replace(Range("B" & i), Mid(Range("B" & i), i, 1), "")) <> _ Len(Replace(Range("C" & i), Mid(Range("B" & i), i, 1), "")) Then GoTo DEĞİL Next k Range("D" & i) = "eşit" GoTo DEVAM DEĞİL: Range("D" & i) = "değil" DEVAM: Next i End Sub
teşekkürler NextLEvel üstad. Örnek dosya ekledim.Ben deniyorum, dediğiniz gibi sonuç almıyorum.
"2 veride 1 harf bile benMEziyorsa "DEĞİL" demesi!" Yazdığım kodda da geçerli
Hata verdiğini söylediğiniz kelimeleri ya da exceli paylaşır mısınız?
çok teşekkür ederim üstadım, şimdi oldu. Diğeri de bir yerde işe yarayacaktır. 2 harika kod için sağ olun var olun, sağlıcakla kalınIf Len(Replace(Range("B" & i), Mid(Range("B" & i), k, 1), "")) <> _
Len(Replace(Range("C" & i), Mid(Range("B" & i), k, 1), "")) Then GoTo DEĞİL
IF satırını yukarıdakiyle değiştirin.
Sub Karşılaştır()
Dim i As Long, _
t1 As String, _
t2 As String
For i = 2 To Range("B" & Rows.Count).End(3).Row
t1 = SozcukSrl(Cells(i, "B"))
t2 = SozcukSrl(Cells(i, "C"))
Cells(i, "D") = t1 = t2
Next i
End Sub
Function SozcukSrl(Txt)
Dim arr
Dim strTemp As String
Dim i As Integer
Dim j As Integer
Dim lngMin As Integer
Dim lngMax As Integer
Txt = Application.WorksheetFunction.Trim(Txt)
Txt = UCase(Replace(Replace(Txt, "i", "İ"), "ı", "I"))
ReDim arr(1 To Len(Txt))
For i = 1 To Len(Txt)
arr(i) = Mid(Txt, i, 1)
Next i
lngMin = LBound(arr)
lngMax = UBound(arr)
For i = lngMin To lngMax - 1
For j = i + 1 To lngMax
If arr(i) > arr(j) Then
strTemp = arr(i)
arr(i) = arr(j)
arr(j) = strTemp
End If
Next j
Next i
Txt = ""
For i = 1 To UBound(arr)
Txt = Txt & arr(i)
Next i
SozcukSrl = Txt
End Function
Sub Test()
For i = 2 To Range("B" & Rows.Count).End(3).Row
al1 = Range("B" & i).Value
al2 = Range("C" & i).Value
Do While al1 <> ""
If Len(al1) = Len(al2) Then
deg = Left(al1, 1)
al1 = Replace(al1, deg, "")
al2 = Replace(al2, deg, "")
If Len(al1) < 2 And al1 = al2 Then
Cells(i, "E").Value = "EŞİT"
GoTo DEVAM
End If
Else
Exit Do
End If
Loop
Cells(i, "E").Value = "DEĞİL"
DEVAM:
Next i
End Sub
veyselemre üstadım elinize, aklınıza sağlık. Harika bir kod. Güçlü bir alternatifimiz oldu. Sağlıcakla kalınKod:Sub Test() For i = 2 To Range("B" & Rows.Count).End(3).Row al1 = Range("B" & i).Value al2 = Range("C" & i).Value Do While al1 <> "" If Len(al1) = Len(al2) Then deg = Left(al1, 1) al1 = Replace(al1, deg, "") al2 = Replace(al2, deg, "") If Len(al1) < 2 And al1 = al2 Then Cells(i, "E").Value = "EŞİT" GoTo DEVAM End If Else Exit Do End If Loop Cells(i, "E").Value = "DEĞİL" DEVAM: Next i End Sub
Necdet Yeşertener üstadım, muhteşem bir kod daha. Elinize, aklınıza sağlık. KTF modunu da içeren mükemmel bir alternatifimiz daha oldu. Sağlıcakla kalınMerhaba,
Bir seçenek te benden. Her iki sözcük karmaşık olsa bile karşılaştırma yapar.
Kod:Sub Karşılaştır() Dim i As Long, _ t1 As String, _ t2 As String For i = 2 To Range("B" & Rows.Count).End(3).Row t1 = SozcukSrl(Cells(i, "B")) t2 = SozcukSrl(Cells(i, "C")) Cells(i, "D") = t1 = t2 Next i End Sub
Kod:Function SozcukSrl(Txt) Dim arr Dim strTemp As String Dim i As Integer Dim j As Integer Dim lngMin As Integer Dim lngMax As Integer Txt = Application.WorksheetFunction.Trim(Txt) Txt = UCase(Replace(Replace(Txt, "i", "İ"), "ı", "I")) ReDim arr(1 To Len(Txt)) For i = 1 To Len(Txt) arr(i) = Mid(Txt, i, 1) Next i lngMin = LBound(arr) lngMax = UBound(arr) For i = lngMin To lngMax - 1 For j = i + 1 To lngMax If arr(i) > arr(j) Then strTemp = arr(i) arr(i) = arr(j) arr(j) = strTemp End If Next j Next i Txt = "" For i = 1 To UBound(arr) Txt = Txt & arr(i) Next i SozcukSrl = Txt End Function
Sub Test()
For i = 2 To Range("B" & Rows.Count).End(3).Row
al1 = UCase(Replace(Replace(Range("B" & i).Value, "i", "İ"), "ı", "I"))
al2 = UCase(Replace(Replace(Range("C" & i).Value, "i", "İ"), "ı", "I"))
sonuc = "EŞİT DEĞİL"
Do While al1 <> "" And Len(al1) = Len(al2)
deg = Left(al1, 1)
al1 = Replace(al1, deg, "")
al2 = Replace(al2, deg, "")
If al1 = al2 Then
sonuc = "EŞİT"
Exit Do
End If
Loop
Cells(i, "E").Value = sonuc
Next i
End Sub
Merhaba,Necdet Yeşertener üstadım, muhteşem bir kod daha. Elinize, aklınıza sağlık. KTF modunu da içeren mükemmel bir alternatifimiz daha oldu. Sağlıcakla kalın
=SozcukSrl(A1)=SozcukSrl(B1)
Korhan Ayhan, üstadım çok teşekkür ederim. Elinize, emeğinize sağlık. Müthiş bir alternatifimiz oldu. Sağlıcakla kalın.Alternatif;
KTF ile çözüm dosyası ektedir.
Hatırlatma için çok teşekkür ederim üstadım, sağlıklı günler dilerimMerhaba,
Doğrudan KTF olarak ta kullanabilirsiniz.
gibi.Kod:=SozcukSrl(A1)=SozcukSrl(B1)
veyselemre üstadım, bu 2. kod da harika oldu. Gerektiğine birini, başka bir durumda diğerini kullanabiliriz. Emeğinize sağlık.Büyük/küçük dikkate almadan eşitliğini kontrol eder.
Kod:Sub Test() For i = 2 To Range("B" & Rows.Count).End(3).Row al1 = UCase(Replace(Replace(Range("B" & i).Value, "i", "İ"), "ı", "I")) al2 = UCase(Replace(Replace(Range("C" & i).Value, "i", "İ"), "ı", "I")) sonuc = "EŞİT DEĞİL" Do While al1 <> "" And Len(al1) = Len(al2) deg = Left(al1, 1) al1 = Replace(al1, deg, "") al2 = Replace(al2, deg, "") If al1 = al2 Then sonuc = "EŞİT" Exit Do End If Loop Cells(i, "E").Value = sonuc Next i End Sub