powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
31 сообщений из 31, показаны все 2 страниц
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471099
Vadiks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите... Заранее благодарен...
У меня есть ячейки в Excel...
Например.
___________________________________
1. | г. Москва ул. 50 лет ССС, 14-2 567
----------------------------------------
2. | ул. 60 лет Победы 2 к. 7-23 12
----------------------------------------
3. | ул. Советская 24-5 г. Киев 0
----------------------------------------
в ячейке с адресом в конце текста есть число, которое может быть в пределах от 0 до 10000.
ВОПРОС! Как удалить эти числа из ячейки и какой код VBA мне в этом поможет.

P.S. Может быть есть какой-то код, который определяет колличество пробелов в ячейке, а сумма пробелов и есть номер последнего пробела после которого находится ненужное число, т.е. удалить все что находится после последнего пробела в ячейке.
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471122
Dophin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadiks,

можно, если бы Вы потрудились приложить файл - решение было бы уже сейчас

пока вот код функции

Function lastpr(t As Range)
Dim arr, i As Integer, str As String
arr = Split(t)
For i = 0 To UBound(arr) - 1
str = str & " " & arr(i)
Next i
lastpr = str
End Function
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471128
Dophin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот возьмите
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471138
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadiks,

Код: plaintext
1.
2.
3.
4.
5.
Dim aText() As String
With ActiveCell
    aText = Split(.Text, " ")
    ReDim Preserve aText(UBound(aText) -  1 )
    .Value = Join(aText)
End With

Можно обойтись и стандартными функциями Excel
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471179
Vadiks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое Всем, Огромное спасибо...
Все заработало...
В следующий раз обязательно буду прикреплять файл
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471363
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadiks, так будет правильнее:
Код: plaintext
1.
2.
3.
4.
Dim i As Integer
With ActiveCell
    i = InStr( 1 , StrReverse(.Text), " ")
    ActiveCell = Left(.Text, Len(.Text) - i)
End With
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471723
Dophin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
With ActiveCell
i = InStrRev(.Text, " ")
ActiveCell = Left(.Text, i)
End With

тоже самое, только в профиль )
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471726
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dophin,


а если число будет 4х значное разделителя точно не будет ? т.е. 1000-> 1 000???
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471831
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так вот где основное обсуждение :)
Я тут проверил варианты - для идеала многим нехватает Trim(), RTrim() и проверки на наличие пробелов и вообще текста в ячейке.
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471843
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121, надо же что-то и автору оставить )))
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471863
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю, можно и не заметить, как впереди появляется пробел...
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471889
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadiks, а вам обязательно в vba?
стандартная функция =СЖПРОБЕЛЫ() делает то же самое
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36471911
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanB, задача немного другая - удаление последнего "слова" строки. У Уокенбаха на эту тему есть готовая формула, но она довольно громоздкая.
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36472419
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlth,

а по моему все ОЧЕНЬ просто
нам известно что 5 последних символов строки содержат значение от 1 до 10000

отрезаем 5 последних символов = ПРАВСИМВ(A1;5)
2 567
теперь ищем в составе этого значения пробел
=ПОИСК(" ";правсимв(A1;5))
получается 2

теперь отрезаем 5-x правых символов
=ПРАВСИМВ(A1;5-ПОИСК(" ";ПРАВСИМВ(A1;5)))
вот Вам 567

т.к. в алгоритме есть дыра на следующей строке "1 1 1"

ищем пробел в последних 3х символах
если он есть перерасчитываем формулу не для 5 символов а для 3х

итого

=ЕСЛИ(
ЕОШИБКА(ПОИСК(" ";ПРАВСИМВ(A1;3))); ' ищем пробел в последних трех символах
ПРАВСИМВ(A1;5-ПОИСК(" ";ПРАВСИМВ(A1;5))); ' если его нет
ПРАВСИМВ(A1;3-ПОИСК(" ";ПРАВСИМВ(A1;3))) ' если он есть
)

вот проверяйте

=ЕСЛИ(ЕОШИБКА(ПОИСК(" ";ПРАВСИМВ(A1;3)));ПРАВСИМВ(A1;5-ПОИСК(" ";ПРАВСИМВ(A1;5)));ПРАВСИМВ(A1;3-ПОИСК(" ";ПРАВСИМВ(A1;3))))

Все более чем просто
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36472815
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus, учитывая возможность использования числа 10000, необходимо отсекать 6 знаков:

=ЕСЛИ(ЕОШИБКА(ПОИСК(" ";ПРАВСИМВ(A1;3)));ПРАВСИМВ(A1; 6 -ПОИСК(" ";ПРАВСИМВ(A1; 6 )));ПРАВСИМВ(A1;3-ПОИСК(" ";ПРАВСИМВ(A1;3))))

Когда я писал про реализацию задачи с помощью формул, мне и представлялся примерно такой, последовательный перебор знаков в конце строки. С помощью Уокенбаха получается гораздо более элегантная формула для отсечения последнего слова:

=ЛЕВСИМВ(A1;НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))-1)

Лишние пробелы, особенно в конце строки, необходимо убрать до применения формул.
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36472923
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlth,

точно, не проверил сразу
но сути это не меняет
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36472941
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthShamanus, учитывая возможность использования числа 10000, необходимо отсекать 6 знаков:

=ЕСЛИ(ЕОШИБКА(ПОИСК(" ";ПРАВСИМВ(A1;3)));ПРАВСИМВ(A1; 6 -ПОИСК(" ";ПРАВСИМВ(A1; 6 )));ПРАВСИМВ(A1;3-ПОИСК(" ";ПРАВСИМВ(A1;3))))

Когда я писал про реализацию задачи с помощью формул, мне и представлялся примерно такой, последовательный перебор знаков в конце строки. С помощью Уокенбаха получается гораздо более элегантная формула для отсечения последнего слова:

=ЛЕВСИМВ(A1;НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))-1)

Лишние пробелы, особенно в конце строки, необходимо убрать до применения формул.

тогда задача решается так

=ПРАВСИМВ(A1;ДЛСТР(A1)-ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))-1))-1)

что не более элегантно чем у меня :)
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36472959
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlth,

черт побери, это я неправ, что то с моей внимательностью.
Я вывел это число в этом коде, а не все кроме него
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36473100
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShamanusЯ вывел это число в этом коде, а не все кроме негоShamanus, неважно, сути не меняет ))
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36473103
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, не важно
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36473819
Vadiks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB,

К счастью или к сожелению именно в VBA
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36473823
Vadiks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,

К счастью пробелов точно нет 1000 или 10000 все одно(слава богу)
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36473831
Vadiks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае, нельзя отсекать не пять ни шесть символов т.к. может быть и ноль...
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #36474073
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadiks,

ноль или null?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37217353
Алексагка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если в конце стоит символ т.е буква как у всего столбца удалить последний 1 - 3 символа после последнего пробела

вот пример текста


Майка жен. 69slam Singlet Top Cotton BONSAI L
Майка жен. 69slam Singlet Top Cotton BONSAI M
Майка жен. 69slam Singlet Top Cotton BONSAI S
Майка жен. 69slam Singlet Top Cotton BONSAI XL
Майка жен. 69slam Singlet Top Cotton DOTT SKULL L
Майка жен. 69slam Singlet Top Cotton DOTT SKULL M
Майка жен. 69slam Singlet Top Cotton DOTT SKULL S
Майка жен. 69slam Singlet Top Cotton DOTT SKULL XS
Майка жен. 69slam Singlet Top Cotton GUITAR L
Майка жен. 69slam Singlet Top Cotton GUITAR M
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37217383
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексагка, первый ответ не читали?
Dophin
Member
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37217456
Алексагка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, не очень понял куда че вставлять гед че писать
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37217509
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексагка,
вставляйте в свой пример в модуль.

Ну если уж совсем лениво - там Dofin за вас пример нарисовал. И функцию вставил - напишите на листе в любой ячейке
Код: plaintext
=lastpr(A1)
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37217511
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, букву потерял - Dophin
...
Рейтинг: 0 / 0
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37219459
Thermik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно и без VBA, берем надстройку www.icqrobot.ru вызываем форму Универсальный Экстактор, устанавливаем шаблон для регулярного выражения .+(?=( \w+ *){1}$) и все...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
    #37967773
GTC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GTC
Гость
vlthShamanus, учитывая возможность использования числа 10000, необходимо отсекать 6 знаков:

=ЕСЛИ(ЕОШИБКА(ПОИСК(" ";ПРАВСИМВ(A1;3)));ПРАВСИМВ(A1; 6 -ПОИСК(" ";ПРАВСИМВ(A1; 6 )));ПРАВСИМВ(A1;3-ПОИСК(" ";ПРАВСИМВ(A1;3))))

Когда я писал про реализацию задачи с помощью формул, мне и представлялся примерно такой, последовательный перебор знаков в конце строки. С помощью Уокенбаха получается гораздо более элегантная формула для отсечения последнего слова:

=ЛЕВСИМВ(A1;НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))-1)

Лишние пробелы, особенно в конце строки, необходимо убрать до применения формул.

=ЛЕВСИМВ(A1;НАЙТИ("*";ПОДСТАВИТЬ(A1;" ";"*";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))-1) вот это шикарно !!! формула ПОДСТАВИТЬ с указанием Номер_вхождения для меня нова, восторг без границ. Я давно сочиняю разные логики в работе с текстом и вот именно этого мне не хватало. Спасибо.
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]