Страницы: 1 2 След.
RSS
Пробелы: какими формулами, кроме СЖПРОБЕЛЫ, можно удалить пробелы?
 
Добрый день! Перед созданием темы, просмотрел форум, но не нашел оптимального ответа. Функция СЖПРОБЕЛЫ не всегда удобна, в виду того, что в столбце несколько тысяч ячеек - у меня нетбук с маленьким дисплеем + AMD проц греется когда нагрузку даешь. Помогите создать две формулы: 1я - должна сносить все пробелы в ячейке т.е. в начале в середине (между буквами и цифрами) и в конце. 2я формула сносит исключительно в конце ячейки, - выгрузка в excel с 1С. Пример во вложении.
 
КрУУУтое название темы.
Изменено: gling - 15.05.2016 10:22:02
 
Пожалуйста без троллинга. Я понимаю что есть guru инженеры excel но я всего лишь обычный пользователь excel
 
Цитата
Gaidar39 написал:
Пожалуйста без троллинга.
Gaidar39, никакой это не троллинг! Ваше название темы никуда не годится: в чём у Вас проблема? Вот это кратко и должно быть в названии темы.
Предложите новое - модераторы поменяют.
 
Ответ могу дать но его скроют модераторы до исправления названия темы.
Слышал где то, что некоторые делают в двери два отверстия, маленькое для прохода котенка и большое для прохода кошки. Вам возможно, достаточно будет одной формулы.
Код
=ПОДСТАВИТЬ(E8;" ";"")
Изменено: gling - 15.05.2016 11:30:58
 
я даже не знаю что и предложить, Может - Пробелы, расширенные возможности СЖПРОБЕЛЫ
 
Название поменял. В следующий раз включайте фантазию при создании темы. Помощь отображается.
 
Цитата
Gaidar39 написал: Я понимаю что есть guru инженеры excel
Я, правда, не гуру и вообще не инженер, но подумайте об использовании макросов, чтобы избежать использования допстолбцов и пересчетов.
Код
Sub tt()
    Dim Rng As Range, arr(), i
    Set Rng = Range("E1:E" & Cells(Rows.Count, "E").End(xlUp).Row)
    arr = Rng
    For i = 1 To UBound(arr)
        If Len(arr(i, 1)) <> 0 Then arr(i, 1) = WorksheetFunction.Trim(arr(i, 1))
    Next
    Rng = arr
End Sub

Sub ttt()
    Dim Rng As Range, arr(), i
    Set Rng = Range("J1:J" & Cells(Rows.Count, "J").End(xlUp).Row)
    arr = Rng
    For i = 1 To UBound(arr)
        If Len(arr(i, 1)) <> 0 Then arr(i, 1) = RTrim(arr(i, 1))
    Next
    Rng = arr
End Sub

 
кнопка цитирования не для ответа [МОДЕРАТОР]

gling, ввожу Вашу формулу, жму интер - выходит ошибка .. :(
 
Gaidar39, а теперь посмотрите на свое сообщение - нужна там цитата?
 
Я ввожу формулу, жму Enter - нет ошибки. Показать, наверное, надо.
 
вот эта ошибка выходит
 
я привык пользоваться функциями и формулами, но макросы для меня темный лес.
 
Цитата
Gaidar39 написал: макросы для меня темный лес
Макросы в данном случае вовсе не нужны.
gling Вам предоставил самую короткую из возможных формулу.
Ее вводить надо правильно: не в ячейку с исходной информацией, а в любую свободную соседнюю.
Изменено: Мотя - 15.05.2016 12:52:24
 
допер наконец-то! вспомнил разницу с ; и , вот так: =ПОДСТАВИТЬ(E8," ","") работает спасибо большое! Сейчас юзаю макрос by MBT
 
Кстати, предложенные Вам макросы не удаляют "внутренние" пробелы.
Макрос - tt() - аналог EXCEL-функции СЖПРОБЕЛЫ (функция TRIM в VBA).
Макрос - ttt() - удаление пробелов справа (функция RTRIM в VBA).
Изменено: Мотя - 15.05.2016 11:40:18
 
Мотя, так СЖПРОБЕЛЫ (WorksheetFunction.Trim) как раз и удаляет и все пробелы, кроме одиночных между словами, в отличии от функции ВБА Trim, которая удаляет пробелы только по краям строки
 
Цитата
Gaidar39 написал: в середине (между буквами и цифрами)
Для того, чтобы это реализовать в предложенных макросах, их алгоритмы придется изменять, ибо Trim, Rtrim, Ltrim - функции VBA - этих действий не предоставляют.
 
Мотя, доктор говорит про WorksheetFunction.Trim - она прекрасно справляется )
 
Цитата
Юрий М написал: WorksheetFunction.Trim
Возможно, это из "век живи, век учись...", но выполненный макрос tt() над столбом Е ожидаемого результата мне не дал.
У меня M's Office 2010.
 
МВТ а можно сделать update макроса - в столбце есть нули вот такого формата 00004556, 00007854 - Ваш макрос сносит их, что не желательно для моих отчетов.
 
А попробуйте в Immediate выполнить такую строку:
Код
?WorksheetFunction.Trim(" Мой  123    текст ")


Сработает?
 
Мотя,странно, у меня отработал, как положено. Ждем, когда ТС отпишется
 
Получается : "Мой 123 текст".
Убраны пробелы "левые и правые" и "лишние" между словами.
Короче, получается текст, "как в предложениях".
 
Значит работает? ))
 
Цитата
Юрий М написал:
))
Для определенных целей...
 
Непонятно, почему в процедуре у Вас не хочет.
 
WorksheetFunction.Trim у меня и в Immediate - окне и в процедуре работает одинаково.
Полагаю, эта функция была задумана для того, чтобы без затей приводить к цивилизованному виду "рукопашные" тексты.
Когда предполагается сравнение, например, по столбам "ФИО" - можно быстро "одинаково причесать" сравниваемые столбы.  :D
 
Мотя, методы WorksheetFunction представляют из себя, как и следует из названия, функции рабочего листа эксель, иногда бывает очень удобно, например, как в данной ситуации, для транспонирования массивов и т.д
 
excel ругаться стал на макросы, уж лучше ручками формулами и функциями по старинке
Страницы: 1 2 След.
Наверх