Страницы: 1
RSS
Замена текста до каждого повторяющегося символа
 
Добрый вечер!
Как заменить на отступ (табуляцию) все символы в ячейке до знака "/" (до слеша)? При этом если в ячейке несколько раз повторяется слеш, то нужно заменить текст на табуляцию до каждого слеша. То есть 3 раза повторяется "/", значит будет 3 отступа (табуляции). Текст после последнего слеша остается.

ПРИМЕРЫ.
на входе (1 знак):
МОТОЗАПЧАСТИ/Амортизаторы YSS
на выходе (1 отступ):
   Амортизаторы YSS

на входе (3 знака):
МОТОЗАПЧАСТИ/Замки цепи/- по размеру цепи/525
на выходе (3 отступа):
           525
Изменено: kazakboris - 10.12.2018 17:27:26 (Загрузка файлов.)
 
Цитата
kazakboris написал: ПРИМЕРЫ.
Сделайте Ваши примеры в файле Excel. Как есть - Как надо. И приложите к сообщению
Согласие есть продукт при полном непротивлении сторон
 
Инструмент Заменить
Найти: */
Заменить на: ни чего не ставим
ОК
Лень двигатель прогресса, доказано!!!
 
=REPT(" ";4*(LEN(A1)-LEN(SUBSTITUTE(A1;"/";""))))&TRIM(RIGHT(SUBSTITUTE(A1;"/";REPT(" ";LEN(A1)));LEN(A1)))
По вопросам из тем форума, личку не читаю.
 
БМВ, не сработало... Видимо тут нужно формулы на русский перевести. Ибо эксель у меня на русском.

Цитата
Sanja написал: Сделайте Ваши примеры...
Готово
 
kazakboris, Вам нужна именно табуляция или пробелы тоже подойдут?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Сергей написал:
Инструмент ЗаменитьНайти: */Заменить на: ни чего не ставимОК
Но так он просто убирает знаки до каждого слеша.
 
Только там пробелы, если нужно отступы, то только макрос
По вопросам из тем форума, личку не читаю.
 
Скажите, правильно понял Вас - пробелы в формуле обозначаются как " "?
Есть альтернативное решение в Numbers, где для табуляции имеется работающий символ.

Цитата
Sanja написал: Вам нужна именно табуляция или пробелы тоже подойдут?
Хмм... Пробелы тоже подойдут.
 
Цитата
БМВ написал: если нужно отступы, то только макрос
В модуль листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim intCount&
On Error Resume Next
If Target.Count = 1 Then
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    intCount = UBound(Split(Target, "/"))
    With Target.Offset(, 2)
        .Value = Split(Target, "/")(intCount)
        .IndentLevel = intCount
    End With
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
да пробел одиночный это " "
Цитата
kazakboris написал:
Есть альтернативное решение
Если для визуализации в excel то только макросом, а вот если потом куда вставлять то можно вместо
REPT(" ";4*(LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")))) использовать
REPT(char(9);LEN(A1)-LEN(SUBSTITUTE(A1;"/";"")))
но отступы появятся только при копировании в блокнот например
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
но отступы появятся только при копировании в блокнот например
Да, мне именно для вставки в блокнот дальнейшей. "Войну и мир" в 1-ом посте ветки не хотел писать... Но по факту визуализация в excel отступов мне не важна - важны отступы в TXT файле.
Перевод формул как понимаю тут https://brusentsov.com/2009/12/27/3519 ?  
Изменено: kazakboris - 10.12.2018 19:40:18 (модератор)
 
Все отлично. Рабочий вариант формулы пишу ниже. Если у кого аналогичный вопрос будет - быстрое решение найдут.  У меня только такой момент остался - при вставке в блокнот появляются кавычки - их как-то можно убрать? ...ну как бэ история не "мегакртичиная" - можно в режиме "система-нипель" порубить простой заменой в текстоовом файле. Но все же...
Код
=ПОВТОР(СИМВОЛ(9);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"/";"")))&СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(A1;"/";ПОВТОР(" ";ДЛСТР(A1)));ДЛСТР(A1)))

Сергей, Sanja, БМВ, спасибо вам за участие в решение моего вопроса! Хорошего вам вечера и с наступающим Новым Годом, кстати говоря!
Изменено: kazakboris - 10.12.2018 19:51:29 (модератор)
 
Цитата
kazakboris написал:
только такой момент остался - при вставке в блокнот появляются кавычки - их как-то можно убрать?
Все же по кавычкам вопрос... Как правильно убрать, чтобы при переносе данных в блокнот кавычек не было? Сейчас при копировании из excel и вставке в txt-файл блокнота появляются.  
Изменено: kazakboris - 17.12.2018 21:30:57 (вопрос всем)
 
Цитата
kazakboris написал:
Как правильно убрать, чтобы при переносе данных в блокнот кавычек не было?
Наверно макросом удобнее - этот макрос обработает первый столбец выделенного диапазона и поместит результат в буфер обмена. Останется только переключиться на Блокнот (или др. программу) и нажать Ctrl+v.
Выделять можно столбец целиком.
Поместите макрос в личную книгу макросов, чтобы запускать при работе с любым файлом: https://www.planetaexcel.ru/techniques/3/5201/
Код
Sub Ka()
Dim v(), x, s$, d$()
  v = Intersect(Selection.Columns(1), ActiveSheet.UsedRange).Value2
  For Each x In v
    d = Split(x, "/")
    If UBound(d) > -1 Then
      s = s & String$(UBound(d), vbTab) & d(UBound(d)) & vbCrLf
    Else
      s = s & vbCrLf
    End If
  Next
  With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 'DataObject
    .SetText s
    .PutInClipboard
  End With
End Sub
Изменено: Казанский - 18.12.2018 01:19:01
Страницы: 1
Наверх