Обмен опытом > Microsoft Excel

Удаление текста в ячейке до определенного символа

(1/2) > >>

alfatboy:
Добрый день!
Необходим макрос для удаления текста, цифр до точки "." и пробела после точки и перенос этого значения в другую ячейку.
"125. Абвг" должно получится "Абвг".
Нашел в инете макрос

--- Код: ---Sub 1   
Dim i%
    i = InStr(1, [a4].Value, ".", vbTextCompare) + 2
    [b4].Value = Right([a4].Value, Len([a4].Value) - i + 1)
End Sub

--- Конец кода ---
но не знаю как сделать, чтобы он работал по диапазону (a4:до последней заполненной ячейки), а не только в ячейке а4.

Serge 007:
Здравствуйте


--- Код: ---Sub alfatboy()
Dim Rrange As Range
Dim LastROW As Long
LastROW = Application.WorksheetFunction.CountA(Range("a4:a1000")) + 3
    For Each Rrange In Range("a4:a" & LastROW)
        Rrange.Offset(0, 2) = Right(Rrange, 2 + InStr(1, Rrange, ". ", vbTextCompare))
    Next Rrange
End Sub
--- Конец кода ---

boa:
Можно и без макроса формулой получить результат

--- Код: ---=СЖПРОБЕЛЫ(ПСТР($A4; ПОИСК(".";$A4)+1;100))
--- Конец кода ---

alfatboy:
Добрый день!
Serge 007 Ваш макрос не совсем правильно работает.
Из 2 строки удаляет только две первых цифры. Получается "7. ЭЮЭ" вместо "ЭЮЭ".
Плюс еще мне необходимо, чтобы имелась возможность указать в какую ячейку данное исправление будет вставляться т.к. это не соседняя ячейка. Данные переносятся из ст.G в ст.E.
Также в значении откуда нужно удалить цифры и точку с пробелом может быть несколько слов "1. Абвгд еежз".

boa Ваш вариант не подходит т.к. необходим именно макрос. Объем большой и каждый раз протягивать формулу не удобно и много времени уходит.

Serge 007:

--- Цитата: alfatboy от 25.05.2022, 12:55:23 ---Serge 007 Ваш макрос не совсем правильно работает.
Из 2 строки удаляет только две первых цифры. Получается "7. ЭЮЭ" вместо "ЭЮЭ".
--- Конец цитаты ---
Да, немного перепутал, не с той стороны отсчет удаляемых знаков вёл  ;D

Так будет работать корректно:
--- Код: ---Sub alfatboy()
Dim Rrange As Range
Dim LastROW As Long
LastROW = Application.WorksheetFunction.CountA(Range("a4:a1000")) + 3
    For Each Rrange In Range("a4:a" & LastROW)
        Rrange.Offset(0, 1) = Right(Rrange, Len(Rrange) - InStr(1, Rrange, ". ", vbTextCompare))
    Next Rrange
End Sub
--- Конец кода ---


--- Цитата: alfatboy от 25.05.2022, 12:55:23 ---...еще мне необходимо, чтобы имелась возможность указать в какую ячейку данное исправление будет вставляться т.к. это не соседняя ячейка. Данные переносятся из ст.G в ст.E...
--- Конец цитаты ---
Тут не понял, так надо "иметь возможность указывать ячейку" или "Данные переносятся из ст.G в ст.E"?


--- Цитата: alfatboy от 25.05.2022, 12:55:23 ---Также в значении откуда нужно удалить цифры и точку с пробелом может быть несколько слов "1. Абвгд еежз".
--- Конец цитаты ---
Но удалять надо, по прежнему, только цифры до точки с пробелом?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии