Metinin önünde ve sonundaki noktalama işaretlerini temizlemek

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,

Hücrede yazan değerin sağında ve solunda yer alan "," ve "." işaretlerini temizlemenin kolay bir yolu var mıdır?
aşağıdaki kodu yazdım ama, birden fazla işaret olduğu zaman eksik kalıyor.

Teşekkürler,
iyi akşamlar.

Kod:
Private Function ConvertTo(deger As Variant)
Dim deger2

If Right(deger, 1) = "," Then
    deger2 = Trim(Left(deger, Len(deger) - 1))
End If

If Left(deger2, 1) = "," Then
    deger2 = Trim(Mid(deger, 2, Len(deger2) - 1))
End If

ConvertTo = deger2

End Function
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,367
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba Tamer Bey,
Örnek veriyi görmekte yarar var diye düşünüyorum.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,334
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Kodunuzun ana yapısını korumaya çalıştım.
Deneyiniz.
Kod:
Private Function ConvertTo(deger As Variant)
Dim sag As Boolean, sol As Boolean

Do
    If Right(deger, 1) = "," Or Right(deger, 1) = "." Or Right(deger, 1) = Chr(133) Then
        deger = Trim(Left(deger, Len(deger) - 1))
    Else
        sag = True
    End If
   
    If Left(deger, 1) = "," Or Left(deger, 1) = "." Or Left(deger, 1) = Chr(133) Then
        deger = Trim(Mid(deger, 2))
    Else
        sol = True
    End If
Loop Until sag = True And sol = True

ConvertTo = deger

End Function
 
Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
Ömer bey 'in cevabını görmedim. Alternatif olsun


Merhaba ,
Aşağıdaki kodu deneyebilirsiniz.
Kod:
Sub ss()
Dim X As Long

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row + 1
hc = Cells(i, 1)
For X = 1 To Len(hc)
If Left(hc, 1) = "." Then
hc = Right(hc, Len(hc) - 1)
hc = Left(hc, Len(hc) - 1)
Else
Exit For
End If
Next
Cells(i, 2) = hc

Next i

End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Kodunuzun ana yapısını korumaya çalıştım.
Deneyiniz.
Kod:
Private Function ConvertTo(deger As Variant)
Dim sag As Boolean, sol As Boolean

Do
    If Right(deger, 1) = "," Or Right(deger, 1) = "." Or Right(deger, 1) = Chr(133) Then
        deger = Trim(Left(deger, Len(deger) - 1))
    Else
        sag = True
    End If
  
    If Left(deger, 1) = "," Or Left(deger, 1) = "." Or Left(deger, 1) = Chr(133) Then
        deger = Trim(Mid(deger, 2))
    Else
        sol = True
    End If
Loop Until sag = True And sol = True

ConvertTo = deger

End Function
teşekkürler Ömer Hocam
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Size bir ktf yazdım. İster formül olarak kullananın. İsterseniz kodda döngüde kullanın.

Kod:
Function Temizle(alan As Range)
Dim regEx As Object
Dim str As String

Set regEx = CreateObject("VBScript.RegExp")

With regEx
    .Global = True
    .IgnoreCase = True
    .Pattern = "^\W{1,999}|\W{1,999}$"
End With
    
Temizle = regEx.Replace(alan.Value, "")
    
End Function
 

Ekli dosyalar

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Size bir ktf yazdım. İster formül olarak kullananın. İsterseniz kodda döngüde kullanın.

Kod:
Function Temizle(alan As Range)
Dim regEx As Object
Dim str As String

Set regEx = CreateObject("VBScript.RegExp")

With regEx
    .Global = True
    .IgnoreCase = True
    .Pattern = "^\W{1,999}|\W{1,999}$"
End With
   
Temizle = regEx.Replace(alan.Value, "")
   
End Function
teşekkürler
 
Üst