Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2023, 23:57   #1
energoadres
 
Регистрация: 06.07.2023
Сообщений: 7
По умолчанию Удалить лишнее слева и справа от конкретных символов

Дорого времени суток.
Искал в темах, но не нашел.

Помогите с макросом.
Надо удалить в выделенной ячейке (может находится в любом месте листа)
всё содержимое слева от конкретного символа (в примере #$#) и все справа от конкретного символа (в примере $#$)
Вложения
Тип файла: xlsx Убрать лишнее.xlsx (9.3 Кб, 7 просмотров)
energoadres вне форума Ответить с цитированием
Старый 04.09.2023, 07:56   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

energoadres, привет
например:
Код:
Sub ertert()
Dim x, i&

With ActiveSheet
    If .FilterMode Then .ShowAllData
    x = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
End With

For i = 1 To UBound(x)
    If InStr(x(i, 1), "#$#") Then x(i, 1) = Split(x(i, 1), "#$#")(1)
    If InStr(x(i, 1), "$#$") Then x(i, 1) = Split(x(i, 1), "$#$")(0)
Next i
Range("B1").Resize(UBound(x)).Value = x
End Sub
nilem вне форума Ответить с цитированием
Старый 04.09.2023, 08:51   #3
energoadres
 
Регистрация: 06.07.2023
Сообщений: 7
По умолчанию

nilem,
Спасибо,
Если возможно, помогите еще с модернизацией кода (может быть я изначально не совсем корректно описал):
1. после применения кода, новое значение (обработанное) остается в исходной ячейке
2. действие кода применимо для ячейки в ЛЮБОМ месте листа (например ячейки А15, В5, С4, или В2:В7)
energoadres вне форума Ответить с цитированием
Старый 05.09.2023, 06:13   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

так нужно?
Код:
Sub ertert()
Dim r As Range
For Each r In Selection.Cells
    If InStr(r.Value, "#$#") Then r.Value = Split(r.Value, "#$#")(1)
    If InStr(r.Value, "$#$") Then r.Value = Split(r.Value, "$#$")(0)
Next r
End Sub
nilem вне форума Ответить с цитированием
Старый 05.09.2023, 08:53   #5
energoadres
 
Регистрация: 06.07.2023
Сообщений: 7
По умолчанию

nilem,
Да, спасибо большое,
Очень сильно помогли.
Я правильно понимаю, я в коде символы "#$#" и "$#$" могу менять на другие, в зависимости от ситуации ?
energoadres вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слева берем самое большое и складываем с правым самым маленьким и так далее слева по убывающей а справа по возрастающей, при сложении четыре числа которые по два числа будут равноудалены. Алексей811 Общие вопросы C/C++ 7 26.08.2020 13:23
Посчитать количество символов справа-налево/ удалить все символы до последнего повторяющегося знака/счетесли/другое решение! Aliv1 Microsoft Office Excel 1 20.12.2016 10:20
Замена нескольких символов из ячейки СПРАВА и СЛЕВА Bkitzhan Помощь студентам 1 24.12.2013 22:45
Два background'а для body (слева и справа от контента)? alex2406 HTML и CSS 7 14.06.2010 16:34
Отступы границ сайта слева и справа slaxik HTML и CSS 4 31.01.2010 11:45