Страницы: 1
RSS
Получить цифры из строки.
 
Всем доброго утра, задачка следующая:  
Есть строка param, значение может быть "Value1", "Value15", "Value156", "Parameter1", "Parameter25" и т.п.  
Пытаюсь придумать как-нить на VBA или можно с worksheetfunction как забрать цифры справа в одну строчку. Через IFы задавать (if like "Value*", if like "Parameter*" then right(str, len-5), right(str,len-9)) получается как-то громоздко :(
 
Попробуйте такой код. Правда я его не опробовал(на данный момент нет возможности запустить VBA).  
 
Sub df()  
Слово = Cells(1, 1).Value  
        Вставка = ""  
        Буква = ""  
   For n = 1 To Len(Cells(sr, 2).Value)  
     If IsNumeric(Буква) Then  
      Буква = Left(Вставка, 1)  
       Вставка = Mid(Слово, n)  
     End If  
   Next  
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
{quote}{login=The_Prist}{date=13.11.2008 10:30}{thema=}{post}Попробуйте такой код. Правда я его не опробовал(на данный момент нет возможности запустить VBA).  
 
Sub df()  
Слово = Cells(1, 1).Value  
        Вставка = ""  
        Буква = ""  
   For n = 1 To Len(Cells(sr, 2).Value)  
     If IsNumeric(Буква) Then  
      Буква = Left(Вставка, 1)  
       Вставка = Mid(Слово, n)  
     End If  
   Next  
End Sub{/post}{/quote}  
 
Я тут ошибочку допустил.Забыл подправить.  
Sub df()  
Слово = Cells(1, 1).Value  
Вставка = ""  
Буква = ""  
For n = 1 To Len(Cells(1, 1).Value)  
If IsNumeric(Буква) Then  
Буква = Left(Вставка, 1)  
Вставка = Mid(Слово, n)  
End If  
Next  
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Не, ну это понятно, мне бы как-нибудь в 1 строку красиво :)
 
{quote}{login=Prog}{date=13.11.2008 11:20}{thema=}{post}Не, ну это понятно, мне бы как-нибудь в 1 строку красиво :){/post}{/quote}  
 
В одну строку.  
Я бы тоже хотел посмотреть, как Вашу задачу можно решить одной строкой кода VBA...  
И правда интересно.Может можно?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
У меня получается с помощью формул листа (без VBA) вот так:  
 
{=МАКС(ЗНАЧЕН(0&СЖПРОБЕЛЫ(ТЕКСТ(ПСТР(B1;СТРОКА(СМЕЩ($A$1;0;0;ДЛСТР(B1);1));1028);"#0;;; "))))}  
 
формула массива. Исходное значение в B1.    
 
может быть есть решение и по-проще. но недосуг искать.
 
{quote}{login=The_Prist}{date=13.11.08 11:27}{thema=Re: }{post}{quote}{login=Prog}{date=13.11.2008 11:20}{thema=}{post}Не, ну это понятно, мне бы как-нибудь в 1 строку красиво :){/post}{/quote}  
В одну строку.  
Я бы тоже хотел посмотреть, как Вашу задачу можно решить одной строкой кода VBA...  
И правда интересно.Может можно?{/post}{/quote}  
 
Люблю, когда красиво:  
MsgBox StrReverse(Val(StrReverse("Value156")))
 
Супер, спасибо )
 
{quote}{login=** ТУРБО-ЁЖ **}{date=13.11.2008 12:12}{thema=Re[6]: Получить цифры из строки.}{post}{quote}{/post}{/quote}
 
Люблю, когда красиво:  
MsgBox StrReverse(Val(StrReverse("Value156"))){/post}{/quote}  
 
Быстрый ежик а как быть если Value150? Нолики не учитываются почему-то.
 
Ну вот с цитирование не повезло, но вопрос остался..  
Быстрый ежик а как быть если Value150? Нолики не учитываются почему-то.
 
Конечно не так красиво, но работаес и с нолями  
 
Sub Выдергиваем_число_из_строки()  
Слово = Cells(1, 1).Value  
Вставка = ""  
Буква = ""  
For n = 1 To Len(Cells(1, 1).Value) + 1  
Буква = Left(Вставка, 1)  
 If IsNumeric(Буква) Or Буква = "0" Then  
   Слово1 = Слово1 & Буква  
 End If  
Вставка = Mid(Слово, n)  
Next  
Cells(2, 1).Value = Слово1  
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо The_Prist, я это знаю, хотелось изящненько...  
А у Вас буковка не пропущена в нике?
 
Если Вы имеете ввиду перевод с английского моего ника(The Priest), то пропущена.  
Но это не первый форум на котором я зарегестрирован(на несколких предыдущих уже были такие ники) и не хотелось бы плодить разные ники для себя. Пусть неправильно - но на всех сайтах один.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
По теме: можно и не так изящно, но в одну строку:  
MsgBox StrReverse(Replace(Val(StrReverse("Value150" & 1)), "1", "", , 1))
 
{quote}{login=Igor67}{date=14.11.08 19:28}{thema=}{post}Быстрый Ёжик, а как быть если Value150?{/post}{/quote}  
 
Действительно, недоработка. Если оценивать изящество решения, то предложу:  
 
MsgBox Int(StrReverse(Val(StrReverse("Value150" & "."))))  
 
Хотя, если исходить из формулировки вопроса: Prog хотел цифры, а не число, поэтому предпочтительней, наверно, использовать вариант анонима.
 
Сенька бери мяч!!!  
Попробую с запятой, как вариант разделителя дробной части, и числовой формат ячейки....
Страницы: 1
Читают тему
Наверх