Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 19:03   #1
Banjo
Новичок
Джуниор
 
Регистрация: 10.11.2010
Сообщений: 3
По умолчанию Удалить значения после определенного символа

10.07072010.51-1
10.30072010.1304-1
10.27072010.1299-1
10.26072010.3040-8
10.26072010.3040-7
10.26072010.3040-6
10.26072010.3040-5
10.26072010.3040-4
32.23062010.Ц00-0265-10-ЭА-4
32.23062010.Ц00-0265-10-ЭА-3
32.23062010.Ц00-0265-10-ЭА-2
32.23062010.Ц00-0265-10-ЭА-1

Имеется вот такой список номеров. Необходимо удалить знак тире в конце и все, что после него. Проблема в том, что встречаются записи, где есть несколько тире, а удалять нужно только последнее
Banjo вне форума Ответить с цитированием
Старый 10.11.2010, 19:07   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

может все гораздо проще?
не надо ли Вам случайно удалить 2 последних символа? тогда =левсимв(A1;длстр(A1)-2)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.11.2010, 19:14   #3
Banjo
Новичок
Джуниор
 
Регистрация: 10.11.2010
Сообщений: 3
По умолчанию

К сожалению нет, после тире может быть от одного до трех чисел
Banjo вне форума Ответить с цитированием
Старый 10.11.2010, 19:26   #4
Banjo
Новичок
Джуниор
 
Регистрация: 10.11.2010
Сообщений: 3
По умолчанию

Хотя можно сначала все с одним знаком удалить, потом все с двумя знаками, потом с тремя, но может все же есть идеи, как еще больше автоматизировать, т.к. объемы большие и часто рпидется это делать
Banjo вне форума Ответить с цитированием
Старый 10.11.2010, 20:02   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Например, так:
Код:
Public Sub Banjo()
Dim x, i As Long
x = Range([a1], Cells(Rows.Count, 1).End(xlUp)).Value
On Error Resume Next
For i = 1 To UBound(x, 1)
    x(i, 1) = Left(x(i, 1), InStrRev(x(i, 1), "-", -1, 1) - 1)
Next i
[a1].Resize(i - 1).Value = x
End Sub
nilem вне форума Ответить с цитированием
Старый 10.11.2010, 20:07   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
=ЕСЛИ(ЕОШ(ПОИСК("*-???";RC[-1]));ЕСЛИ(ЕОШ(ПОИСК("*-??";RC[-1]));ЕСЛИ(ЕОШ(ПОИСК("*-?";RC[-1]));RC[-1];ЛЕВСИМВ(RC[-1];ДЛСТР(RC[-1])-2));ЛЕВСИМВ(RC[-1];ДЛСТР(RC[-1])-3));ЛЕВСИМВ(RC[-1];ДЛСТР(RC[-1])-4))
или в стиле ссылок А1
=ЕСЛИ(ЕОШ(ПОИСК("*-???";A1));ЕСЛИ(ЕОШ(ПОИСК("*-??";A1));ЕСЛИ(ЕОШ(ПОИСК("*-?";A1));A1;ЛЕВСИМВ(A1;ДЛСТР(A1)-2));ЛЕВСИМВ(A1;ДЛСТР(A1)-3));ЛЕВСИМВ(A1;ДЛСТР(A1)-4))
длинно, пафосно, но должно удалять...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.11.2010, 20:55   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Очень важный момент: Вам требуется сделать эти преобразования в этой же ячейке? Или допустимо организовать формулу (функцию) в другой ячейке?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.11.2010, 21:00   #8
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Код:
=ЛЕВСИМВ(A1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА($1:$99);1)="-";СТРОКА($1:$99)))-1)
Формула массива.
Вложения
Тип файла: rar Banjo.rar (3.7 Кб, 38 просмотров)
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 11.11.2010, 00:28   #9
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

=ПРОСМОТР(1;0/(ПРАВСИМВ(ПСТР(A1;2;СТРОКА($1:$99)) )="-");ПСТР(A1;1;СТРОКА($1:$99)))
kim2 вне форума Ответить с цитированием
Старый 11.11.2010, 23:38   #10
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Цитата:
Сообщение от Banjo Посмотреть сообщение
К сожалению нет, после тире может быть от одного до трех чисел
Значит, максимальное число удаляемых символов - 4. В данных, показанных в примере, нет варианта с двумя "-" в четырех правых символах. Если в рабочем примере так же, то сработает формула:
Код:
=ПСТР(A1;1;ДЛСТР(A1)-5+ПОИСК("-";ПРАВСИМВ(A1;4)))
vikttur вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Excel удалить\копировать фрагмент текста до определенного символа? Vatrolf Microsoft Office Excel 2 15.07.2010 14:24
Удалить из строкового значения все вхождения заданного символа. Delphi Saka Помощь студентам 10 08.03.2010 01:22
Как добраться до определенного символа в Edit Ivanko Помощь студентам 2 08.02.2010 11:49
Результат до определенного значения и не выше. mato Общие вопросы C/C++ 8 04.12.2009 16:07
Как удалить IdCookieManager для определенного домена? OkeaH Работа с сетью в Delphi 1 08.02.2009 15:11