Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Копировать и заменить по * (звездочке)

Автор nvm, 16.09.2019, 11:32

« назад - далее »

nvm

Всем привет!
Не знаю макросов и программирование, но задачка такая.
Есть определенное кол-во строк
и мне надо с самого конца каждой строки удалить значение до первой запятой.

я не нашел ничего лучше чем просто сделать таким способом:
CTRL + F в поле найти вбиваю такую конструкцию (*, *, '*', '*', '*', '*', '*', '*', '*'),
а в поле заменить делаю так: (*, *, '*', '*', '*', '*', '*', '*', '111'),

и на выходе получаю )))  -  (*, *, '*', '*', '*', '*', '*', '*', '111'),

тоесть по факту конструкция поиска работает (*, *, '*', '*', '*', '*', '*', '*', '*'),

но как сделать так, что бы при замене текст оставался тот который под звездочками?
Может как то экранировать нужно или посоветуйте как быть?

vikttur


GWolf

Цитата: nvm от 16.09.2019, 11:32
Не знаю макросов и программирование, но задачка такая.
это зря - очень помогает ...
ЦитироватьМожет как то экранировать нужно или посоветуйте как быть?

можно вот так посоветовать: Sub УдалитьДоКрайЗПТ()
'
' УдалитьДоКрайЗПТ Макрос
' Удалить часть строки до первой запятой от правого края строки
'
' Сочетание клавиш: Ctrl+Shivt+Ю
'
    With ActiveSheet
        k = Selection.Rows.Count
        MsgBox "Количество обрабатываемых строк = " & k, vbInformation + vbOKOnly, ""

        For Each CelSelect In Selection
            t = CelSelect.Value
'            MsgBox t, vbInformation + vbOKOnly, ""

'            For j = 1 To Len(t)
'                simv = Mid(t, j, 1)
'                ascZn = Asc(simv)
'                MsgBox simv & Chr(10) & ascZn, vbInformation + vbOKOnly, t
'            Next j
           
            znak = InStrRev(t, Chr(44), , vbTextCompare)
            e = Mid(t, 1, znak - 1)
           
            MsgBox e, vbInformation + vbOKOnly, ""
           
            CelSelect.Offset(, 1) = e
        Next
    End With
End Sub
Путей к вершине - множество. Этот один из многих!

runner

#3
=ЛЕВСИМВ(A1;ПОИСК(",";A1;1)-1)
так?

runner

#4
=ЛЕВСИМВ(ПОДСТАВИТЬ(A1;",";"#";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";"")));ПОИСК("#";ПОДСТАВИТЬ(A1;",";"#";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";""))))-1)

или так?
Но тогда в условии должно быть написано не
Цитироватьнадо с самого конца каждой строки удалить значение до первой запятой.
а надо в каждой строке удалить значение после последней запятой.

пример был бы лучшим вариантом ;D