Страницы: 1
RSS
Из текста оставить только число, уменьшив это число на единицу, Vba
 
Здравствуйте. В ячейке А1 текст - "Мне исполнилось 25 лет". Покажите пожалуйста как из текста оставить только число, уменьшив это число на единицу. Надо получить в ячейке А2 текст - "24"
 
abc1, здравствуйте! Одна из тысяч таких тем
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, спасибо за ссылку, только мне не подходит. не нашел как уменьшить число на единицу.
а нет ли попроще вариант?
после числа всегда четыре значения. может можно от этого отталкиваться
 
Цитата
abc1: мне не подходит. не нашел как уменьшить число на единицу
то есть после того, как вы отделили число от текста, вы не в состоянии отнять от него единицу???
Цитата
abc1: нет ли попроще вариант?
есть конечно — калькулятор и ручки, но проще или нет момент очень субъективный…
Цитата
abc1: после числа всегда четыре значения
вы бы пример хоть сделали тогда… Хотя тут и угадывать любят многие.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
abc1 написал:
как уменьшить число на единицу
Как вариант: у=х-1
 
abc1, Добрый день, а перед цифрой текст может менятся?
 
zhekachan, здравствуйте. да, может меняться. но перед числом всегда есть текст "исполнилось ". тоже можно зацепиться
 
abc1,Как вариант, можно через формулу массива:

Код
=MID(A1;MIN(FIND({0;1;2;3;4;5;6;7;8;9}; A1 & {0;1;2;3;4;5;6;7;8;9}));2)-1
Изменено: zhekachan - 07.08.2019 10:36:24
 
zhekachan, спасибо. только формулами я смог бы. мне макросом надо. и польз.функциии не подойдут.
 
Файл-пример. Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
 
вот решение
Код
Sub Макрос2()
'
' Макрос2 Макрос
'

'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = _
        "=--MID(R[-5]C[-1],FIND(""исполнилось "",R[-5]C[-1])+12,2)-1"
End Sub
 
Цитата
abc1 написал: вот решение
Вы макросом вставляете формулу, хотя раньше было
Цитата
abc1 написал: только формулами я смог бы. мне макросом надо. и польз.функциии не подойдут
В чем подвох?
Согласие есть продукт при полном непротивлении сторон
 
Sanja, подвоха нет. и это не решение. вернее решение, но прейдется одну ячейку выделить под эту формулу, а потом макросом брать .value из ячейки.
вообще мне надо эти 24 как переменная. в ячейке В1 нужно только для форума
 
информативный пример)
Изменено: abc1 - 07.08.2019 11:12:49
 
Вот мой пример. Выделите диапазон нажми кнопку
Код
Sub abc_1()
Dim iCl As Range, iVal
On Error Resume Next
For Each iCl In Selection
    iVal = RegExpExtract(iCl.Value, "\d+")
    If IsError(iVal) Then
        MsgBox "В строке нет чисел!", vbCritical
    Else
        MsgBox iVal
    End If
Next
End Sub

Private Function RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1)
    On Error GoTo ErrHandl
    Set regex = CreateObject("VBScript.RegExp")
    regex.Pattern = Pattern
    regex.Global = True
    If regex.Test(Text) Then
        Set matches = regex.Execute(Text)
        RegExpExtract = matches.Item(Item - 1)
        Exit Function
    End If
ErrHandl:
    RegExpExtract = CVErr(xlErrValue)
End Function
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо. еще решение
Код
Sub Макрос1()
c = Range("a1").Value
b = InStr(1, c, "исполнилось ")
Range("B1") = Mid(c, 12 + b, 2) - 1
End Sub
Страницы: 1
Наверх