Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выдернуть текст из середины текста - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выдернуть текст из середины текста (Формулы/Formulas)
Выдернуть текст из середины текста
Сергей-К Дата: Суббота, 14.06.2014, 23:18 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый вечер. Помогите, пожалуйста, "выдернуть" часть текста из ячейки. До этого работал только с функциями ПСТР, ЛЕВСИМВ и ПРАВСИМВ, но в данном случае задача осложняется неодинаковым количеством знаков в ячейке.
Спасибо.
К сообщению приложен файл: 0120959.xls (19.0 Kb)
 
Ответить
СообщениеДобрый вечер. Помогите, пожалуйста, "выдернуть" часть текста из ячейки. До этого работал только с функциями ПСТР, ЛЕВСИМВ и ПРАВСИМВ, но в данном случае задача осложняется неодинаковым количеством знаков в ячейке.
Спасибо.

Автор - Сергей-К
Дата добавления - 14.06.2014 в 23:18
Nic70y Дата: Суббота, 14.06.2014, 23:26 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8791
Репутация: 2293 ±
Замечаний: 0% ±

Excel 2010
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(C2;ПОИСК("(";C2)+1;99);")";ПОВТОР(" ";99));99))
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(C2;ПОИСК("\";ПОДСТАВИТЬ(C2;"(";"\";2))+1;99);")";ПОВТОР(" ";99));99))
Код
=ПСТР(C2;ПОИСК("-";C2)-6;5)
Код
=ПСТР(C2;ПОИСК("-";C2)+13;5)
такие варианты


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Суббота, 14.06.2014, 23:33
 
Ответить
Сообщение
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(C2;ПОИСК("(";C2)+1;99);")";ПОВТОР(" ";99));99))
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(C2;ПОИСК("\";ПОДСТАВИТЬ(C2;"(";"\";2))+1;99);")";ПОВТОР(" ";99));99))
Код
=ПСТР(C2;ПОИСК("-";C2)-6;5)
Код
=ПСТР(C2;ПОИСК("-";C2)+13;5)
такие варианты

Автор - Nic70y
Дата добавления - 14.06.2014 в 23:26
Сергей-К Дата: Суббота, 14.06.2014, 23:32 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Да, отлично. А для вторых скобок можно?
 
Ответить
СообщениеДа, отлично. А для вторых скобок можно?

Автор - Сергей-К
Дата добавления - 14.06.2014 в 23:32
Nic70y Дата: Суббота, 14.06.2014, 23:33 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 8791
Репутация: 2293 ±
Замечаний: 0% ±

Excel 2010
дополнил сообщение выше


ЮMoney 41001841029809
 
Ответить
Сообщениедополнил сообщение выше

Автор - Nic70y
Дата добавления - 14.06.2014 в 23:33
Сергей-К Дата: Суббота, 14.06.2014, 23:37 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Nic70y, спасибо, всё работает! Очень оперативно!
 
Ответить
СообщениеNic70y, спасибо, всё работает! Очень оперативно!

Автор - Сергей-К
Дата добавления - 14.06.2014 в 23:37
ShAM Дата: Суббота, 14.06.2014, 23:48 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Как вариант (для скобок):
Код
=ПСТР(C2;ПОИСК("(";C2)+1;ПОИСК(")";C2)-ПОИСК("(";C2)-1)

Код
=ПСТР(C2;ПОИСК("(";C2;ПОИСК("(";C2;1)+1)+1;ПОИСК(")";C2;ПОИСК(")";C2;1)+1)-ПОИСК("(";C2;ПОИСК("(";C2;1)+1)-1)
 
Ответить
СообщениеКак вариант (для скобок):
Код
=ПСТР(C2;ПОИСК("(";C2)+1;ПОИСК(")";C2)-ПОИСК("(";C2)-1)

Код
=ПСТР(C2;ПОИСК("(";C2;ПОИСК("(";C2;1)+1)+1;ПОИСК(")";C2;ПОИСК(")";C2;1)+1)-ПОИСК("(";C2;ПОИСК("(";C2;1)+1)-1)

Автор - ShAM
Дата добавления - 14.06.2014 в 23:48
Сергей-К Дата: Суббота, 14.06.2014, 23:53 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Ну когда я вырасту для таких формул? ShAM, спасибо!
 
Ответить
СообщениеНу когда я вырасту для таких формул? ShAM, спасибо!

Автор - Сергей-К
Дата добавления - 14.06.2014 в 23:53
AlexM Дата: Воскресенье, 15.06.2014, 00:34 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4513
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Еще вариант для скобок
Код
=ПРАВБ(ЗАМЕНИТЬ(C2;ПОИСК(")";C2);99;"");2)
и
Код
=ПРАВБ(ЗАМЕНИТЬ(C2;ПОИСК(")";C2;ПОИСК(")";C2)+1);99;"");4)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЕще вариант для скобок
Код
=ПРАВБ(ЗАМЕНИТЬ(C2;ПОИСК(")";C2);99;"");2)
и
Код
=ПРАВБ(ЗАМЕНИТЬ(C2;ПОИСК(")";C2;ПОИСК(")";C2)+1);99;"");4)

Автор - AlexM
Дата добавления - 15.06.2014 в 00:34
Сергей-К Дата: Воскресенье, 15.06.2014, 00:52 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Код
=ПРАВБ(ЗАМЕНИТЬ(C2;ПОИСК(")";C2);99;"");2)
А с этой хоть будет попроще разобраться. Спасибо, AlexM,
 
Ответить
Сообщение
Код
=ПРАВБ(ЗАМЕНИТЬ(C2;ПОИСК(")";C2);99;"");2)
А с этой хоть будет попроще разобраться. Спасибо, AlexM,

Автор - Сергей-К
Дата добавления - 15.06.2014 в 00:52
Hugo Дата: Воскресенье, 15.06.2014, 01:02 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Если всёж использовать одну UDF:
Код
=Substring(Substring(C2;"(";2;2);")";1;1)
Код
=Substring(Substring(C2;"(";3;3);")";1;1)
Код
=Substring(Substring(C2;")";2;2);" ";2;2)
Код
=Substring(Substring(C2;")";2;2);" ";5;5)


код:
[vba]
Код
Function Substring(Текст As String, Символ_разделитель As String, _
                     Начальный_Номер_фрагмента As Long, Конечный_Номер_фрагмента As Long) As String
'---------------------------------------------------------------------------------------
' URL : http://www.planetaexcel.ru/tip.php?aid=54
' Purpose : Выделяет из текста субстринг/и, ориентируясь по символам-разделителям
' Notes : Substring(текст; символ_разделитель; Начальный_Номер_фрагмента, Конечный_Номер_фрагмента), где
' текст - текст, который делим
' символ_разделитель - символ, который надо считать разделителем фрагментов
' Начальный_Номер_фрагмента - порядковый номер фрагмента, с которого нужна выборка
' Конечный_Номер_фрагмента - порядковый номер фрагмента, по который нужна выборка
'---------------------------------------------------------------------------------------
      On Error Resume Next
      Dim sArr() As String, li As Long
      sArr = Split(Application.Trim(Текст), Символ_разделитель)
      If Конечный_Номер_фрагмента > 0 Then
          Начальный_Номер_фрагмента = Начальный_Номер_фрагмента - 1
          Конечный_Номер_фрагмента = Конечный_Номер_фрагмента - 1
          For li = Начальный_Номер_фрагмента To Конечный_Номер_фрагмента
              Substring = IIf(li = Начальный_Номер_фрагмента, sArr(li), Substring & _
                     Символ_разделитель & sArr(li))
          Next li
      Else
          Substring = Split(Application.Trim(Текст), _
                            Символ_разделитель)(Начальный_Номер_фрагмента - 1)
      End If
End Function
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЕсли всёж использовать одну UDF:
Код
=Substring(Substring(C2;"(";2;2);")";1;1)
Код
=Substring(Substring(C2;"(";3;3);")";1;1)
Код
=Substring(Substring(C2;")";2;2);" ";2;2)
Код
=Substring(Substring(C2;")";2;2);" ";5;5)


код:
[vba]
Код
Function Substring(Текст As String, Символ_разделитель As String, _
                     Начальный_Номер_фрагмента As Long, Конечный_Номер_фрагмента As Long) As String
'---------------------------------------------------------------------------------------
' URL : http://www.planetaexcel.ru/tip.php?aid=54
' Purpose : Выделяет из текста субстринг/и, ориентируясь по символам-разделителям
' Notes : Substring(текст; символ_разделитель; Начальный_Номер_фрагмента, Конечный_Номер_фрагмента), где
' текст - текст, который делим
' символ_разделитель - символ, который надо считать разделителем фрагментов
' Начальный_Номер_фрагмента - порядковый номер фрагмента, с которого нужна выборка
' Конечный_Номер_фрагмента - порядковый номер фрагмента, по который нужна выборка
'---------------------------------------------------------------------------------------
      On Error Resume Next
      Dim sArr() As String, li As Long
      sArr = Split(Application.Trim(Текст), Символ_разделитель)
      If Конечный_Номер_фрагмента > 0 Then
          Начальный_Номер_фрагмента = Начальный_Номер_фрагмента - 1
          Конечный_Номер_фрагмента = Конечный_Номер_фрагмента - 1
          For li = Начальный_Номер_фрагмента To Конечный_Номер_фрагмента
              Substring = IIf(li = Начальный_Номер_фрагмента, sArr(li), Substring & _
                     Символ_разделитель & sArr(li))
          Next li
      Else
          Substring = Split(Application.Trim(Текст), _
                            Символ_разделитель)(Начальный_Номер_фрагмента - 1)
      End If
End Function
[/vba]

Автор - Hugo
Дата добавления - 15.06.2014 в 01:02
krosav4ig Дата: Воскресенье, 15.06.2014, 02:00 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ну раз речь зашла за UDF, вот еще вариант
[vba]
Код
Function substring(s$, n%) As Variant
         Select Case n
         Case 1: substring = Split(Split(s, ")")(0), "(")(1)
         Case 2: substring = Split(Split(s, ")")(1), "(")(1)
         Case 3: substring = TimeValue(Right(Split(s, ":")(0), 2) & _
             ":" & Left(Split(s, ":")(1), 2))
         Case 4: substring = TimeValue(Right(Split(s, ":")(1), 2) & _
             ":" & Left(Split(s, ":")(2), 2))
         End Select
End Function
[/vba]

и еще формулы до кучи (все массивные)
1 скобки
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=")";СТОЛБЕЦ(1:1);"");1)-2;2)
2 скобки
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=")";СТОЛБЕЦ(1:1);"");2)-4;4)
1 время
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=":";СТОЛБЕЦ(1:1);"");1)-2;5)
2 время
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=":";СТОЛБЕЦ(1:1);"");2)-2;5)
К сообщению приложен файл: 0120959_.xls (33.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 15.06.2014, 03:04
 
Ответить
Сообщениену раз речь зашла за UDF, вот еще вариант
[vba]
Код
Function substring(s$, n%) As Variant
         Select Case n
         Case 1: substring = Split(Split(s, ")")(0), "(")(1)
         Case 2: substring = Split(Split(s, ")")(1), "(")(1)
         Case 3: substring = TimeValue(Right(Split(s, ":")(0), 2) & _
             ":" & Left(Split(s, ":")(1), 2))
         Case 4: substring = TimeValue(Right(Split(s, ":")(1), 2) & _
             ":" & Left(Split(s, ":")(2), 2))
         End Select
End Function
[/vba]

и еще формулы до кучи (все массивные)
1 скобки
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=")";СТОЛБЕЦ(1:1);"");1)-2;2)
2 скобки
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=")";СТОЛБЕЦ(1:1);"");2)-4;4)
1 время
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=":";СТОЛБЕЦ(1:1);"");1)-2;5)
2 время
Код
=ПСТР(C2;НАИМЕНЬШИЙ(ЕСЛИ(ПСТР(C2;СТОЛБЕЦ(1:1);1)=":";СТОЛБЕЦ(1:1);"");2)-2;5)

Автор - krosav4ig
Дата добавления - 15.06.2014 в 02:00
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выдернуть текст из середины текста (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!