Страницы: 1
RSS
поиск и замена символа в конце предложения
 
Добрый вечер! В книге есть столбец - G4:G200, в каждой ячейке столбца - предложения, заканчивающиеся на ";"  ","  "/" Как с помощью макроса (именно макроса, чтобы не создавать дополнительных ячеек для обработки) осуществить замену данных символов на "."??
Спасибо!
 
Ctrl+H не подходит?
А макрорекордер?

Range("G4:G200" ;) .Select
Selection.Replace What:=";", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="/", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

или знаки могут быть внутри тоже?
Изменено: Nic70y - 21.01.2013 23:54:04
 
да, внутри предложений знаки тоже присутствуют(
Изменено: Женя Юрсин - 22.01.2013 00:16:28
 
Женя Юрсин, В таком случае прикладывайте файл с примером.
зы. И цитировать нужно, когда это нужно.
 
В соседнем столбце формула
=ЛЕВСИМВ(G4;ДЛСТР(G4)-1)&"."
и протятуть до G200
 
без создания доп ячеек не получится?
Изменено: Женя Юрсин - 22.01.2013 00:16:05
 
А возможна ситуация, когда там нет ни одного из этих символов ( ";" "," "/")?
 
Kuzmich, автор просит
Цитата
Женя Юрсин пишет:
Как с помощью макроса (именно макроса,...
Sub Point()
Dim i&
For i = 4 To 200
Range("G" & i) = Left(Trim(Range("G" & i)), Len(Range("G" & i)) - 1) & "."
Next
End Sub


зы. после правки код сбивается
Изменено: Михаил С. - 22.01.2013 00:44:45
 
Цитата
Юрий М пишет:
А возможна ситуация, когда там нет ни одного из этих символов ( ";" "," "/"  ;)  ?
может быть пробел, пример в приложении
Изменено: Женя Юрсин - 22.01.2013 00:33:22
 
a = Trim(Arr(1, 1))
а это для чего?
 
Случайно затесалось  :D
Изменено: Михаил С. - 22.01.2013 00:50:00
 
Женя Юрсин, для вашего файла
Код
Sub Point()
Dim i&
On Error Resume Next
For i = 4 To 200
Range("G" & i) = Trim(Left(Trim(Range("G" & i)), Len(Trim(Range("G" & i))) - 1)) & "."
Next
End Sub
 
По-стариковски (см. файл).
Вариант Михаила даст ошибку в 8-ой строке.
 
Цитата
Юрий М пишет:
Вариант Михаила даст ошибку в 8-ой строке.
Я исправил  :D не ту исправил.
Изменено: Михаил С. - 22.01.2013 01:35:01
 
Код
Sub test()
a = [g4..g15].Value
For i = 1 To UBound(a)
If Len(a(i, 1)) > 0 Then Mid(a(i, 1), Len(a(i, 1)), 1) = "."
Next
[g4..g15].Value = a
End Sub

можно так
Изменено: R Dmitry - 22.01.2013 01:10:27
Спасибо
 
Дим, лучше не править, а ЦЕЛИКОМ новый код вставлять.
 
Юра, я когда правлю код стараюсь полностью код вместе с тегом заменить.  ;)
Спасибо
 
И правильно! ))
 
В моем примере используется не функция Mid ,  а оператор Mid
Он используется довольно редко, но иногда , как в данном случае им пользоваться очень удобно.
Спасибо
 
По коду R Dmitry, вопросы.

  1. Не понятен синтаксис [g4..g15]. Почему нет ошибки?
  2. Mid(a(i, 1), Len(a(i, 1)), 1) = "." - вернет True или False, а где замена?

Мой исправленный вариант
Код
Sub Point()
Dim i&
Application.ScreenUpdating = False
On Error Resume Next
For i = 4 To 200
If Right(Trim(Range("G" & i)), 1) Like "[A-ÿ]" Then
    Range("G" & i) = Trim(Range("G" & i)) & "."
 Else
    Range("G" & i) = Trim(Left(Trim(Range("G" & i)), Len(Trim(Range("G" & i))) - 1)) & "."
End If
Next
Application.ScreenUpdating = True
End Sub
 
Вариант.
 
Михаил С., Совет 23
 
спасибо всем за помощь!
Изменено: Женя Юрсин - 22.01.2013 10:22:31
 
Михаил С., подскажите как сделать чтобы макрос не ел цифры?
если сделать так - If Right(Trim(Range("G" & i)), 1) Like "[A-ÿ]" or "[0-9]" Then - цифры не трогает, но и запятые и двоеточия также оставляет..
Изменено: Женя Юрсин - 22.01.2013 13:41:30
 
Так чуть быстрее будет
Код
Sub Point()
Dim i&, s As String
Application.ScreenUpdating = False
On Error Resume Next
For i = 4 To 200
s = Trim(Range("G" & i))
If Right(s, 1) Like "[0-9,A-я]" Then
    Range("G" & i) = Trim(Range("G" & i)) & "."
 Else
    Range("G" & i) = Trim(Left(s, Len(s) - 1)) & "."
End If
Next
Application.ScreenUpdating = True
End Sub
Изменено: Михаил С. - 22.01.2013 14:16:52
 
Михаил С., спасибо!
Страницы: 1
Наверх