Страницы: 1
RSS
Удалить переносы строк в конце предложения
 
Добрый день! Наши сотрудники часто присылают файлики, где в ячейках в конце после текста куча переносов строк, пример прилагаю. Дело в том, что у меня делается автоподбор высоты, и приходится постоянно перепроверять каждый листик, поскольку руководство не любит когда "некрасиво". Иначе высота строки подбирается неверно.
Как можно удалить эти переносы? Вопрос в удалении переносов именно в конце текста. В интернете в основном варианты по сплошному удалению всех переносов в ячейке.
 
как вариант но не будет учитывать единичный перенос в конце
Код
=ЛЕВСИМВ(D6;ПОИСК(ПОВТОР(СИМВОЛ(10);2);D6)-1)
Лень двигатель прогресса, доказано!!!
 
Если хотите на месте, то макросом. Если выводить в доп. столбец, то можно так:
=ЛЕВСИМВ(D6;ПРОСМОТР(2;1/(ПСТР(D6;СТРОКА(A1:ИНДЕКС(A1:A999;ДЛСТР(D6)));1)<>СИМВОЛ(10));СТРОКА(A1:ИНДЕКС(A1:A999;ДЛСТР(D6)))))
или так:
=ЛЕВСИМВ(D6;ДЛСТР(D6)-ПОИСКПОЗ(1=1;ЛЕВСИМВ(ПРАВСИМВ(D6;СТРОКА(A1:ИНДЕКС(A1:A99;ДЛСТР(D6)))))<>СИМВОЛ(10);0)+1)
Изменено: Максим В. - 24.04.2019 15:23:59
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Если хотите на месте, то макросом.
Да, нужно на месте. Автоподбор высоты у меня делает макрос, поэтому удобнее было бы добавить к макросу еще код, но вот какой.
 
Цитата
Baot написал:
Да, нужно на месте.
ну мож кому пригодится не на месте адаптивный вариант на один перенос в конце
Код
=ЕСЛИОШИБКА(ЛЕВСИМВ(D6;ПОИСК(ПОВТОР(СИМВОЛ(10);2);D6)-1);ПОДСТАВИТЬ(D6&"     ";СИМВОЛ(10)&"     ";""))
Лень двигатель прогресса, доказано!!!
 
Сергей, Ваш вариант первый хорошо отработал.
 
Можно таким макросом для активной ячейки:
Код
Sub DelSymb()
    Dim arrIn, lngI As Long, strS As String
    arrIn = Split(ActiveCell, Chr(10))'пихаем в массив значение ячейки, по разделителю переносстроки
    For lngI = 0 To UBound(arrIn) 'по каждому элементу массива
        If arrIn(lngI) <> "" Then 'если элемент массива не пустой
            strS = strS & arrIn(lngI) & Chr(10) 'пишем его в строку и добавляем перенос строки в конец
        End If
    Next lngI
        strS = Left(strS, Len(strS) - 1) 'убираем последний перенос в строке
        ActiveCell = strS: ActiveCell.EntireRow.AutoFit 'пишем в активную ячейку итоговую строку и делаем автоподбор высоты.
End Sub

т.к. в примере была только одна ячейка с данными. Если нужно для набора ячеек, то надо понимать, как они расположены, и отсюда переписать обработку. Но основная мысль останется той же - мы сначала разбиваем содержимое ячейки, определяем непустые части и собираем их заново, исключая пустышки.
Изменено: Пытливый - 24.04.2019 13:57:37
Кому решение нужно - тот пример и рисует.
 
Пытливый, спасибо большое, работает!
Страницы: 1
Наверх