Страницы: 1
RSS
Как разделить текст
 
Добрый день!  
подскажите, пожалуйста, как можно разделить текст в ячейке на несколько, если разделитель запятая пробел заглавная буква?  
т.к. в тексте есть запятые и маленькие буквы, но нужно делить текст именно по большой букве.
 
Меню Данные-Текст_по_столбцам.
 
Это конечно все понятно, но мне не подходит, тк. мне нужно разделить текст там где запятая пробел и следуещее слово начинается с большой буквы, а если после зщапятой стоит маленькая буква то не нужно делить, а писать все в одну строку, и мне нужно с помощью формулы, что бы автоматически это делалась при подставлении текста в ячейку.
 
Тогда сюда:  
http://www.planetaexcel.ru/forum.php?thread_id=8735
 
Sub test()  
   Dim st As String  
   Dim r As Integer, j As Integer  
   Dim arr()  
   st = ActiveCell  
   j = 0  
   For r = Len(st) To 3 Step -1  
       If Asc(Mid(st, r, 1)) >= 192 And Asc(Mid(st, r, 1)) <= 223 Then  
           If Mid(st, r - 2, 2) = ", " Then  
               ReDim Preserve arr(j)  
               arr(j) = Right(st, Len(st) - r + 1)  
               st = Left(st, r - 3)  
               j = j + 1  
               r = r - 2  
           End If  
       End If  
   Next r  
   ReDim Preserve arr(j)  
   arr(j) = st  
   For j = UBound(arr) To LBound(arr) Step -1  
       ActiveCell.Offset(0, UBound(arr) - j + 1) = arr(j)  
   Next j  
End Sub
 
{quote}{login=Tanya1}{date=12.07.2011 09:57}{thema=Re: }{post}Это конечно все понятно, но мне не подходит, тк. мне нужно разделить текст там где запятая пробел и следуещее слово начинается с большой буквы, а если после зщапятой стоит маленькая буква то не нужно делить, а писать все в одну строку, и мне нужно с помощью формулы, что бы автоматически это делалась при подставлении текста в ячейку.{/post}{/quote}как только вы добавите текст в ячейку, формула (из этой ячейки) удалиться.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=12.07.2011 10:24}{thema=Re: Re: }{post}{quote}{login=Tanya1}{date=12.07.2011 09:57}{thema=Re: }{post}Это конечно все понятно, но мне не подходит, тк. мне нужно разделить текст там где запятая пробел и следуещее слово начинается с большой буквы, а если после зщапятой стоит маленькая буква то не нужно делить, а писать все в одну строку, и мне нужно с помощью формулы, что бы автоматически это делалась при подставлении текста в ячейку.{/post}{/quote}как только вы добавите текст в ячейку, формула (из этой ячейки) удалиться.{/post}{/quot  
Формула будет стоять в другой ячейке и ссылаться на ячейку где будет меняться текст
 
Вместо того, чтобы себя цитировать, лучше покажите, что надо.
 
webley спасибо большое с помощью макроса все работает, но дело в том, что    
данные разделения будут происходить на скрытом листе, и мне нужно что бы при подставлении текста в ячейку А1 на листе 1, на скрытом листе 2 выполнялось разделение текста, можно ли что то сделать что бы макрос работал на скрытом листе?  
именно поэтому я думала может с помощью формулы можно сделать разделение...
 
а почему вы считаете, что он не будет работать на скрытом листе?
 
{quote}{login=webley}{date=12.07.2011 10:41}{thema=}{post}а почему вы считаете, что он не будет работать на скрытом листе?{/post}{/quote}  
Строку ActiveCell.Offset(0, UBound(arr) - j + 1) = arr(j) придется подправить.
Я сам - дурнее всякого примера! ...
 
Я просто не знаю как можно сделать, что бы макрос автоматически срабатывал на скрытом листе при изменении текста в ячейке А1 на листе 1, при это удаляя старые данные, когда была сделана разбивка старого текста, т.к. текст имеет разную длину и иногда новый текст меньше старого, и остаются ячейки со старым текстом.
 
формула в желтой ячейке, текст в зеленой... если я ни чего не напутал : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
ой, извbните дядя Юра ^_^
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
udf  
 
Function TextPart(st As String, partN As Integer)  
   Dim r As Integer, j As Integer  
   Dim arr()  
   j = 0  
   For r = Len(st) To 3 Step -1  
       If Asc(Mid(st, r, 1)) >= 192 And Asc(Mid(st, r, 1)) <= 223 Then  
           If Mid(st, r - 2, 2) = ", " Then  
               ReDim Preserve arr(j)  
               arr(j) = Right(st, Len(st) - r + 1)  
               st = Left(st, r - 3)  
               j = j + 1  
               r = r - 2  
           End If  
       End If  
   Next r  
   ReDim Preserve arr(j)  
   arr(j) = st  
   If partN > j + 1 Then  
       TextPart = ""  
   Else  
       TextPart = arr(j + 1 - partN)  
   End If  
End Function
 
прощу прощения, так правильней:  
 
=ЕСЛИ(КОДСИМВ(ПСТР(B1;НАЙТИ(", ";B1;1)+2;1))=КОДСИМВ(ПРОПИСН(ПСТР(B1;НАЙТИ(", ";B1;1)+2;1)));ПРАВСИМВ(B1;ДЛСТР(B1)-НАЙТИ(", ";B1;1)-1);)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
webley вы гений, спасибо вам огромное, вы мне очень очень помогли.  
Спасибо!!!!!
 
У избушечников спёр..    
:)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=12.07.2011 12:07}{thema=}{post}У избушечников спёр..    
:){/post}{/quote}А сам вроде не из их лагеря:-)
Я сам - дурнее всякого примера! ...
 
Привет, Серёжа.  
Слабоват я для них.. Не берут к себе. ;(
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1
Читают тему
Наверх