извличане на специфичен текст от клетка
9 отговора
283 прегледа
извличане на специфичен текст от клетка
Здравейте,
Възможно ли е без да се прави макрос да се състави формула която да извлича следната информация:
Клетка съдържа следните данни:
10 1500 ИВАН ИВАНОВ 10000
Как да извлека само текста "ИВАН ИВАНОВ"?
Възможно ли е без да се прави макрос да се състави формула която да извлича следната информация:
Клетка съдържа следните данни:
10 1500 ИВАН ИВАНОВ 10000
Как да извлека само текста "ИВАН ИВАНОВ"?
Re: извличане на специфичен текст от клетка
цифрите отпред и отзад едни и същи ли са винаги
т.е. винаги името започва от 8-я символ и накрая има 6 символа, които не ни трябват
така ли?
kolkoto pove4e nau4i6,
tolkova pove4e 6te zabravi6
т.е. винаги името започва от 8-я символ и накрая има 6 символа, които не ни трябват
така ли?
kolkoto pove4e nau4i6,
tolkova pove4e 6te zabravi6
Re: извличане на специфичен текст от клетка
Не са едни и същи, променят се както цифрите в началото и края, така и текста които ми трябва и който трябва да извлека от средата.
Иначе щях да използвам функцията MID!
Искам от всяка клетка функцията да извлича текса на името без другата ненужна информация. Може би е някаква комбинация от функциите find, replace, search или нещо такова!
Иначе щях да използвам функцията MID!
Искам от всяка клетка функцията да извлича текса на името без другата ненужна информация. Може би е някаква комбинация от функциите find, replace, search или нещо такова!
Re: извличане на специфичен текст от клетка
а може ли да се каже, че винаги има 2 интервала преди името и един след него
kolkoto pove4e nau4i6,
tolkova pove4e 6te zabravi6
kolkoto pove4e nau4i6,
tolkova pove4e 6te zabravi6
Re: извличане на специфичен текст от клетка
Според мен, ако структурата на текста в клетката е винаги от типа "10 1500 ИВАН ИВАНОВ 10000", т.е. " цифри, интервал, цифри, интервал, име, интервал, цифри" най-лесно ще ти е да използваш Data -> Text to columns
с тази функция разделяш текста в една клетка (колона) като Ексел автоматично използва разделителите в текста (Delimiters).
уф, малко сложно стана, но това е като пивот таблиците - лесно е като се покаже, но да се обясни - сложно. Прати примерно файлче на koliu_m@yahoo.com
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
с тази функция разделяш текста в една клетка (колона) като Ексел автоматично използва разделителите в текста (Delimiters).
уф, малко сложно стана, но това е като пивот таблиците - лесно е като се покаже, но да се обясни - сложно. Прати примерно файлче на koliu_m@yahoo.com
По българите при Дойран са изстреляни 350 000 снаряда. Даваме 9 убити и 40 ранени.
Re: извличане на специфичен текст от клетка
това е ако текста ти е в A1
всеки човек има по 2 имена
преди името има два интервала а след него един
=+MID(A1;FIND(" ";A1;FIND(" ";A1;1)+1)+1;FIND(" ";A1;FIND(" ";A1;FIND(" ";A1;FIND(" ";A1;1)+1)+1)+1)-FIND(" ";A1;FIND(" ";A1;1)+1))
може и да е по-дълга :-)
kolkoto pove4e nau4i6,
tolkova pove4e 6te zabravi6
всеки човек има по 2 имена
преди името има два интервала а след него един
=+MID(A1;FIND(" ";A1;FIND(" ";A1;1)+1)+1;FIND(" ";A1;FIND(" ";A1;FIND(" ";A1;FIND(" ";A1;1)+1)+1)+1)-FIND(" ";A1;FIND(" ";A1;1)+1))
може и да е по-дълга :-)
kolkoto pove4e nau4i6,
tolkova pove4e 6te zabravi6
Re: извличане на специфичен текст от клетка
Няма нищо сигурно, въпроса е да се изведе текст от числа. Този текст се променя като може да бъде от една, две или три думи, интервалите също се променят. Имаш ли някаква идея какво може да се приложи. Интересно ми е дали може да се направи комбинация от функции за търсене и да се използват функции като find, search, replace или нещо от този сорт!
Re: извличане на специфичен текст от клетка
Колю, изпратил съм ти едно малко файлче на пощата. Ако искаш го погледни.
Re: извличане на специфичен текст от клетка
Текстът от дадена клетка може да се извлече много елегантно с една формулка (User defined):
Function ExtractText(rCell As Range)
Dim lCount As Long, l As Long
Dim sText As String
Dim lT As String
sText = rCell
For lCount = Len(sText) To 1 Step -1
If Not IsNumeric(Mid(sText, lCount, 1)) Then
l = l + 1
lT = Mid(sText, lCount, 1) & lT
End If
Next lCount
ExtractText = CStr(lT)
End Function
Формулката се копира в някой модул на Microsoft Visual Basic и с Insert Function/User Defined се използва в съответната клетка. Ако имаш някакви проблеми обясни ги и ще се помъчим да ги решим.
Function ExtractText(rCell As Range)
Dim lCount As Long, l As Long
Dim sText As String
Dim lT As String
sText = rCell
For lCount = Len(sText) To 1 Step -1
If Not IsNumeric(Mid(sText, lCount, 1)) Then
l = l + 1
lT = Mid(sText, lCount, 1) & lT
End If
Next lCount
ExtractText = CStr(lT)
End Function
Формулката се копира в някой модул на Microsoft Visual Basic и с Insert Function/User Defined се използва в съответната клетка. Ако имаш някакви проблеми обясни ги и ще се помъчим да ги решим.
Re: извличане на специфичен текст от клетка
Ако не знаеш нито къде ти е името, нито колко е дълго, нито колко интервала - къде има. (изобщо нищо) Мога да ти препоръчам следната технология:
1.Съставяш си една база с имена, презимена и фамилии (всички възможни)
2.В цикъл проверяваш дали всеки елемент от базата го има като подстринг в клетката. Ако го има - проверка - дали преди него и след него има интервал (преди това трябва да се провери къде се намира и да се отсеят вариантите за в началото и края на стринга)
Лошото е , че ако има некое откачено име нема да може да го прочете.
Според мен е по-добре да се конкретизира задачата - ако името е само от букви и няма друг текст в стринга - има по-лесен вариант :
1.Заменят се всички символи различни от букви с интервал
2.За всеки два съседни интервала се маха единие (изпълнява се докато няма 2 съседни интервала)
3.Махат се интервалите в началото и края на стринга.
Колкото до самото програмиране - Съвета ми е на БЕЙСИК и после закачаш функцийката към некое бутонче.
"БЛАЖЕННИ СА ВЯРВАЩИТЕ И НЕПРОВЕРЯВАЩИТЕ"
1.Съставяш си една база с имена, презимена и фамилии (всички възможни)
2.В цикъл проверяваш дали всеки елемент от базата го има като подстринг в клетката. Ако го има - проверка - дали преди него и след него има интервал (преди това трябва да се провери къде се намира и да се отсеят вариантите за в началото и края на стринга)
Лошото е , че ако има некое откачено име нема да може да го прочете.
Според мен е по-добре да се конкретизира задачата - ако името е само от букви и няма друг текст в стринга - има по-лесен вариант :
1.Заменят се всички символи различни от букви с интервал
2.За всеки два съседни интервала се маха единие (изпълнява се докато няма 2 съседни интервала)
3.Махат се интервалите в началото и края на стринга.
Колкото до самото програмиране - Съвета ми е на БЕЙСИК и после закачаш функцийката към некое бутонче.
"БЛАЖЕННИ СА ВЯРВАЩИТЕ И НЕПРОВЕРЯВАЩИТЕ"