Страницы: 1
RSS
как получить часть содержимого ячейки?
 
Вопрос в следующем: В ячейках столбца находится различная текстовая информация. Во всех ячейках в тексте встречается одинаковая фраза. Нужно извлечь содержимое значения ячейки после этой фразы. Количество слов как до этой фразы, так и после нее всегда разное. В примере это понятнее..  
Желательнее решение на формулах - без VBA..  
Спасибо!
 
{quote}{login=vveco}{date=12.04.2011 09:48}{thema=как получить часть содержимого ячейки?}{post}Вопрос в следующем: В ячейках столбца находится различная текстовая информация. Во всех ячейках в тексте встречается одинаковая фраза. Нужно извлечь содержимое значения ячейки после этой фразы. Количество слов как до этой фразы, так и после нее всегда разное. В примере это понятнее..  
Желательнее решение на формулах - без VBA..  
Спасибо!{/post}{/quote}  
 
 
=ПСТР(A3;НАЙТИ("Правильный ответ:";A3;1)+17;ДЛСТР(A3)-НАЙТИ("Правильный ответ:";A3;1))
Спасибо
 
На UDF проще:  
=Substring(A3;"Правильный ответ: ";2;2)  
Но ведь не надо...  
 
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
 
Замечательно! Спасибо! Маленький вопрос - в исходном столбце в конце текста в ячейках стоит пробел и он этой формулой переносится в итоговую ячейку - а можно ли отредактировать формулу так, чтобы итог был без пробела на конце? или проще исходный столбец отредактировать? как тогда для него формулу записать? :)
 
для итога без пробела на конце надо к функциям, которые вам подсказали, дополнительно "снаружи" применить функцию =СЖПРОБЕЛЫ(текст), где вместо "текст" пишете подсказанные функции.
 
=ПСТР(A5;ПОИСК("ответ:";A5)+7;999)
 
Спасибо всем большое! очень помогли.. Посмотрите если не трудно, то что получилось - там в итоговом столбце собирается вопрос для теста в LMS Moodle. И где то ошибка в результате которой добавляется лишний знак "~" ко второму варианту не верного ответа..
 
ISBLANK(I4) заменил на IF(LEN(I4)=0  
Остальные не менял, там сами... Смысл в том, что ISBLANK(формула)=FALSE  
 
=CONCATENATE(E4;" ";"{";$K$4;F4;"#";G4;(IF(ISBLANK(H4);"";CONCATENATE($L$4;H4)));IF(LEN(I4)=0;"";CONCATENATE($L$4;I4));IF(ISBLANK(J4);"";CONCATENATE($L$4;J4));"}")
Страницы: 1
Читают тему
Loading...