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

P.S. Может быть есть какой-то код, который определяет колличество пробелов в ячейке, а сумма пробелов и есть номер последнего пробела после которого находится ненужное число, т.е. удалить все что находится после последнего пробела в ячейке.
...
Рейтинг: 0 / 0
15.02.2010, 21:43
    #36471122
Dophin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
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
15.02.2010, 21:50
    #36471128
Dophin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
вот возьмите
...
Рейтинг: 0 / 0
15.02.2010, 21:53
    #36471138
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
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
15.02.2010, 22:26
    #36471179
Vadiks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Большое Всем, Огромное спасибо...
Все заработало...
В следующий раз обязательно буду прикреплять файл
...
Рейтинг: 0 / 0
16.02.2010, 00:21
    #36471363
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
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
16.02.2010, 09:46
    #36471723
Dophin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
With ActiveCell
i = InStrRev(.Text, " ")
ActiveCell = Left(.Text, i)
End With

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


а если число будет 4х значное разделителя точно не будет ? т.е. 1000-> 1 000???
...
Рейтинг: 0 / 0
16.02.2010, 10:24
    #36471831
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Так вот где основное обсуждение :)
Я тут проверил варианты - для идеала многим нехватает Trim(), RTrim() и проверки на наличие пробелов и вообще текста в ячейке.
...
Рейтинг: 0 / 0
16.02.2010, 10:28
    #36471843
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Hugo121, надо же что-то и автору оставить )))
...
Рейтинг: 0 / 0
16.02.2010, 10:36
    #36471863
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Я думаю, можно и не заметить, как впереди появляется пробел...
...
Рейтинг: 0 / 0
16.02.2010, 10:49
    #36471889
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Vadiks, а вам обязательно в vba?
стандартная функция =СЖПРОБЕЛЫ() делает то же самое
...
Рейтинг: 0 / 0
16.02.2010, 10:57
    #36471911
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
PlanB, задача немного другая - удаление последнего "слова" строки. У Уокенбаха на эту тему есть готовая формула, но она довольно громоздкая.
...
Рейтинг: 0 / 0
16.02.2010, 13:48
    #36472419
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
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
16.02.2010, 15:45
    #36472815
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
Shamanus, учитывая возможность использования числа 10000, необходимо отсекать 6 знаков:

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

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

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

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

точно, не проверил сразу
но сути это не меняет
...
Рейтинг: 0 / 0
16.02.2010, 16:22
    #36472941
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
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
16.02.2010, 16:26
    #36472959
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
vlth,

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

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

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

ноль или null?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.04.2011, 21:19
    #37217353
Алексагка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA
а если в конце стоит символ т.е буква как у всего столбца удалить последний 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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как удалить все что находится после последнего пробела в ячейке Excel при помощи VBA / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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