Страницы: 1
RSS
Выделение последовательности чисел в ячейке со смешенным наполнением.
 
Добрый день!  
Имеется ячейки типа:  
РРРЛ 293 г.Москва 999000 11-22  
Необходимо скопировать 999000 (условие 6 цифр подряд) в другую ячейку.  
Подскажите как это реализовать.
 
Произвести копирование навыков хватает.  
А вот сделать выборку в ячейке по условию не могу.
 
разделить на слова(по пробелам), в цикле проверить длину слова, если 6, то проверить не число ли..  
 
макросом.. (можно и формулой, наверное)
Живи и дай жить..
 
UDF-ом  
 
Function НАЙТИЧИСЛО(s As String) As String  
   a = Split(s, " ")  
   НАЙТИЧИСЛО = ""  
   For i = LBound(a) To UBound(a)  
       If IsNumeric(a(i)) And (Len(a(i)) = 6) Then  
           НАЙТИЧИСЛО = a(i)  
           Exit For  
       End If  
   Next i  
 
End Function  
________________________  
khafizovtt@gmail.com
Учимся сами и помогаем другим...
 
{quote}{login=Александр Манн}{date=08.10.2012 12:22}{post}...условие 6 цифр подряд{/post}{/quote}  
Еще условия? Всегда перед последним пробелом? Всегда после названия города?
 
{quote}{login=ber$erk}{date=08.10.2012 12:37}{thema=}{post}UDF-ом  
...  
If IsNumeric(a(i)) And (Len(a(i)) = 6) Then  
...{/post}{/quote}  
 
я бы все таки:  
 
if len(a(i)=6 then  
if isnumeric(a(i)) then  
..  
endif  
endif
Живи и дай жить..
 
Function MN(text As String) As String  
   Dim r As Object  
   Set r = CreateObject("vbscript.regexp")  
   r.Pattern = "\b\d{6}\b"  
   MN = r.Execute(text)(0): Set r = Nothing  
End Function
Я сам - дурнее всякого примера! ...
 
Если в числах заведомо не будет лидирующих нолей, то можно сразу вернуть число:  
Function MN&(text As String)  
   With CreateObject("vbscript.regexp")  
   .Pattern = "\b\d{6}\b"  
   MN = .Execute(text)(0): End With  
End Function
Я сам - дурнее всякого примера! ...
 
{quote}{login=vikttur}{date=08.10.2012 12:43}{thema=}{post}Еще условия? Всегда перед последним пробелом? Всегда после названия города?{/post}{/quote}  
Нет возможны разные сочетания и порядок
 
=МАКС(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА(1:99);7));--ПСТР(A1;СТРОКА(1:99);7)))  
 
Если в извлекаемой части первый "0":  
=ПРАВСИМВ(МАКС(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА(1:99);7));1000000+ПСТР(A1;СТРОКА(1:99);7)));6)  
 
Как вводить формулу массива:  
После введения формулы в ячейку, ввод завершается нажатием не просто Enter, а Ctrl+Shift+Enter. Формула при этом будет заключена в фигурные скобки - {}.
 
{quote}{login=vikttur}{date=08.10.2012 01:36}{thema=}{post}=МАКС(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА(1:99);7));--ПСТР(A1;СТРОКА(1:99);7)))...{/post}{/quote}  
Классный подход. Хотя остается момент "(условие 6 цифр подряд)". Если это важный фактор, то строку "РРРЛ 293 г.Москва 999000 11-1234567", формула обработает неверно (вернет "1234567"). Но это вопрос к ТС конечно.  
________________________  
khafizovtt@gmail.com
Учимся сами и помогаем другим...
 
Такое тоже имеется.  
 
Всем СПАСИБО!  
Все получилось.
Страницы: 1
Читают тему
Наверх