2015-11-02 7 views
1

Эта формула удаляет все, кроме цифр:Удалить символы из ячейки

Sub qwerty() 
    For Each r In Selection 
     vout = "" 
     v = r.Text 
     n = Len(v) 
     For i = 1 To n 
      ch = Mid(v, i, 1) 
      If ch Like "[0-9]" Then 
       vout = vout & ch 
      End If 
     Next i 
     r.Value = vout 
    Next r 
End Sub 

Как я могу изменить его так, что он будет держать числа и десятичные точки?

+4

Это был буквально ответил просто несколько минут назад [здесь] (http://stackoverflow.com/questions/33487287/script-to-remove-letters) –

+0

Скотт - я попробовал тот, с которым вы связались, но по какой-то причине макрос не отображается мне лист превосходства. Тот, который я опубликовал, виден. В принципе, тот, с которым вы связаны, не работает для меня, но это делает. Я просто должен сохранить десятичные точки в дополнение к номерам и хотел бы придерживаться этого кода, потому что это просто. –

+0

Что означает видимость ???? Вы пробовали «или»? – findwindow

ответ

0

Чтобы включить ., включите его в выражении Like

If ch Like "[0-9.]" Then 
+0

Спасибо, сэр. –

0

Лучше использовать Regexp чем медленно петлевой посимвольно через щёток петлю диапазон:

Sub Quicker() 
Dim X 
Dim ObjRegex As Object 
Dim lngRow As Long 
Dim lngCOl As Long 

Set ObjRegex = CreateObject("vbscript.regexp") 
ObjRegex.Global = True 
ObjRegex.Pattern = "[^0-9/.]" 

X = Selection.Value2 
For lngRow = 1 To UBound(X, 1) 
    For lngCOl = 1 To UBound(X, 2) 
     X(lngRow, lngCOl) = ObjRegex.Replace(X(lngRow, lngCOl), vbNullString) 
    Next 
Next 

Selection.Value2 = X 

End Sub 
Смежные вопросы