Страницы: 1
RSS
Удаление указанных символов из ячейки
 
Добрый день!

Есть задача привести значение столбца к единому формату, в нашем случае телефон.
Сделать можно или индивидуально для каждой ячейки в столбце и протянуть или через обработку всего столбца сразу, например по нажатию кнопки, которой будет заголовок столбца.
Выбор решения зависит от нагрузки на файл, нужно чтобы файл не стал огромным при использовании макросов для например 10-15 столбцов с разными параметрами.
Ранее находил макрос " =repl(ячейка для обработки;ячейка с перечислением удаляемых символов) ", но сейчас он не работает и не могу найти сам макрос.
Если у кого-то из формучан есть опыт или что-то подобное помогите пожалуйста, может я не нашел тему которую обсуждали ранее.
Изменено: Jake85 - 03.09.2019 11:09:10
 
Цитата
Jake85 написал:
нужно чтобы файл не стал огромным при использовании макросов
Это от формул файл пухнет, а не от макросов ))
 
Как вариант формулой
Код
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(E2;"(";"");")";"");" ";"");"-";"")

По аналогии можете дописать остальные символы. Если нужно макросом, то будет как то так:
Код
Sub Заменить()

for i = 2 to cells(rows.count,5).end(xlup).row
cells(i, 4) = replace(replace(replace(replace(cells(i, 5);"(";"");")";"");" ";"");"-";"")
next i

end sub
 
А как сделать чтобы удаляемые значения указывались в определенной ячейке например через ; или в "" ? чтобы не в самом макросе
Изменено: Jake85 - 03.09.2019 17:54:20
 
Можно вот такой функцией тогда попробовать:
Код
Function ЧИСТЫЙНОМЕР(Исходное_значение As String, Удаляемые_символы As String)
x = Удаляемые_символы
y = Len(x)
Z = Исходное_значение
k = Z
    For i = 1 To y
        x1 = Mid(x, i, 1)
        n = InStr(1, Z, x1)
        If n > 0 Then
           k = Replace(k, x1, "")
           ЧИСТЫЙНОМЕР = k
        End If
    Next i
End Function
Изменено: GRIM - 03.09.2019 13:26:19
 
Jake85, можно чуть быстрее
Код
Option Explicit
Function СимволыУдалитьПоСписку(iVal$, Sym$)
Dim s$, i&

    For i = 1 To Len(Sym)
        s = Mid$(Sym, i, 1)
        If InStr(iVal, s) Then iVal = Replace$(iVal, s, "")
    Next i

СимволыУдалитьПоСписку = iVal
End Function
но в примере у вас что-то очень похожее на "Как удалить всё, кроме чисел". Если так, то вам гораздо более подойдёт совсем другое решение
Изменено: Jack Famous - 03.09.2019 17:13:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
GRIM написал:
Прикрепленные файлы
Пример.xlsm  (14.29 КБ)
Подскажите как мне из примера перенести формулу в свой файл?
Страницы: 1
Наверх