Страницы: 1
RSS
Найти второе, третье и др слова в ячейке
 
Проблема в следующем: Есть столбец, в нем значения состоящие из нескольких слов разделенных пробелом. Как вытащить на другие ячейки эти слова отдельно от всей ячейки? Первое слово достаточно просто найти - =ПСТР(A1;1;НАЙТИ(" ";A1)-1), а остальные чет не допираю. Помогите пожалуйста.
 
{quote}{login=ciklon}{date=17.08.2010 11:16}{thema=Найти второе, третье и др слова в ячейке}{post}Проблема в следующем: Есть столбец, в нем значения состоящие из нескольких слов разделенных пробелом. Как вытащить на другие ячейки эти слова отдельно от всей ячейки? Первое слово достаточно просто найти - =ПСТР(A1;1;НАЙТИ(" ";A1)-1), а остальные чет не допираю. Помогите пожалуйста.{/post}{/quote}  
 
Здравствуйте! Мне вот это очень помогло: http://www.planetaexcel.ru/tip.php?aid=54
 
Function Substring(Текст, Символ_разделитель, Номер_фрагмента) As String  
  '---------------------------------------------------------------------------------------  
  ' URL       : http://www.planetaexcel.ru/tip.php?aid=54  
  ' Purpose   : Выделяет из текста n-ный субстринг, ориентируясь по символам-разделителям  
  ' Notes     : Substring(текст; символ_разделитель; номер_фрагмента), где  
  '             текст - текст, который делим  
  '             символ_разделитель - символ, который надо считать разделителем фрагментов  
  '             номер_фрагмента - порядковый номер фрагмента, который нам нужен  
  '---------------------------------------------------------------------------------------  
  On Error Resume Next  
  Substring = Split(Application.Trim(Текст), Символ_разделитель)(Номер_фрагмента - 1)  
End Function
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Ну или макрос для допиливания :)  
 
Sub tt()  
For Each cc In [a1:a4]
arr = Split(Application.Trim(cc))  
For i = 0 To UBound(arr)  
cc.Offset(, i + 1) = arr(i)  
Next  
Next  
End Sub
 
ИМХО функция намного проще. Всего одна строка и никакого цикла.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Вот такая формула. В А1 текст, N - порядковый номер слова, которое надо вытащить.  
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;" ";ПОВТОР(" ";ДЛСТР(A1)));ДЛСТР(A1)*(N-1)+1;ДЛСТР(1)))
 
{quote}{login=Alex_ST}{date=17.08.2010 11:25}{thema=}{post}ИМХО функция намного проще. Всего одна строка и никакого цикла.{/post}{/quote}  
 
Но с другой стороны:  
http://www.planetaexcel.ru/tip.php?aid=54  
Олег  
23.06.2008 А как то же самое сделать с помощью макроса, чтобы не вставлять все время в новый лист те же форлулы!!!.
 
Ошибся немного, в конце формулы не ДЛСТР(1), а ДЛСТР(A1)  
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;" ";ПОВТОР(" ";ДЛСТР(A1)));ДЛСТР(A1)*(N-1)+1;ДЛСТР(A1)))
 
Пример. Формулу можно протягивать и по вертикали и по горизонтали.
 
Спасибо за помощь
 
коллеги, а ведь совершенно забыта такая банальная штука, как "текст по столбцам" ;)  
(прячется в меню "Данные")
 
{quote}{login=mazayZR}{date=18.08.2010 05:11}{thema=}{post}коллеги, а ведь совершенно забыта такая банальная штука, как "текст по столбцам" ;)  
(прячется в меню "Данные"){/post}{/quote}mazayZR, мы помним.  
Но это скучно :-)))
 
{quote}{login=Serge 007}{date=18.08.2010 05:19}{thema=Re: }{post}{quote}{login=mazayZR}{date=18.08.2010 05:11}{thema=}{post}коллеги, а ведь совершенно забыта такая банальная штука, как "текст по столбцам" ;)  
(прячется в меню "Данные"){/post}{/quote}mazayZR, мы помним.  
Но это скучно :-))){/post}{/quote}  
я понимаю :)
 
Формула работает замечательно.  
Подскажите, пожалуйста. В указанном примере функция выглядит так:  
СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ($A1;" ";ПОВТОР(" ";ДЛСТР($A1)));ДЛСТР($A1)*(СТОЛБЕЦ(A:A)-1)+1;ДЛСТР($A1)))  
 
Основное назначение функций (СЖПРОБЕЛЫ/ПСТР/ПОДСТАВИТЬ/ПОВТОР/СТОЛБЕЦ) я вроде понял.  
Но вот что-то никак не могу сообразить, какое назначение имеют ДЛСТР($A1)*(СТОЛБЕЦ(A:A)-1)+1 и ПОВТОР(" ";ДЛСТР($A1))  
 
Если не сложно, поясните.
 
up
 
Vlad нарисовал и убежал, а Andrew нервничает, спасать надо :)  
Между словами вставляется количество пробелов, равное длине строки:  
ПОДСТАВИТЬ($A1;" ";ПОВТОР(" ";ДЛСТР($A1))  
В подготовленной таким образом строке ищем нужный порядковый № символа, с которого начинается извлекаемый фрагмент:  
ДЛСТР($A1)*(СТОЛБЕЦ(B:B)-1)+1, т.е. с протягиванием формулы по столбцам меняется кратность ДЛСТР($A1).  
СЖПРОБЕЛЫ работает как дворник - убирает все лишние пробелы.
 
{quote}{login=vikttur}{date=26.08.2010 01:11}{thema=}{post}Vlad нарисовал и убежал, а Andrew нервничает, спасать надо :)  
Между словами вставляется количество пробелов, равное длине строки:  
ПОДСТАВИТЬ($A1;" ";ПОВТОР(" ";ДЛСТР($A1))  
В подготовленной таким образом строке ищем нужный порядковый № символа, с которого начинается извлекаемый фрагмент:  
ДЛСТР($A1)*(СТОЛБЕЦ(B:B)-1)+1, т.е. с протягиванием формулы по столбцам меняется кратность ДЛСТР($A1).  
СЖПРОБЕЛЫ работает как дворник - убирает все лишние пробелы.{/post}{/quote}  
 
Спасибо вам за пояснение.  
Теперь разобрался.
Страницы: 1
Наверх