Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Выделение цифр из текста для подстановки в другую ячейку
 
Всем, добрый день!
Форумчане, подскажите пожалуйста по задаче моей, за сутки перерыл уже кучу всего, хожу близко но не получается, знаний мало, каюсь.
Задача такая: имеем ячейку, в неё вносятся разные данные, иногда это просто цифры, иногда с буквами, пример: R3287FG или 47320, или K-5963,
нужно извлекать первые две цифры для другой ячейки, если отталкиваться от примера, то для  R3287FG это будет 32, для 47320 будет 47, ну и по аналоги..
К сожалению вводимое может быть и с пробелами и дефисом..

Каких только формул не находил, всё рядом, но не моё, сам подправить формулы пока не в силах.
Помогите пожалуйста )
 
Может быть можно сделать стандартными функциями, не скажу, не спец по стандартным - но без проблем можно сделать, написав свою простую функцию пользователя. Знаете про UDF, используете?

Например берём готовое
Код
Public Function ExtractNumber(s As String)
    Dim i As Long, str As String
    For i = 1 To Len(s)
        If InStr(1, "1234567890,", Mid(s, i, 1)) <> 0 Then str = str & Mid(s, i, 1)
    Next
    ExtractNumber = str
End Function

и используем так:
Код
=LEFT(ExtractNumber(A1),2)
Изменено: Hugo - 4 Мар 2015 13:46:05
 
d4s5y8 такой вариант может быть? какой тогда ответ.
пока такой вариант - формула массива
Код
=ПСТР(A5;МИН(ЕСЛИ(ЕЧИСЛО(ПОИСК(СТРОКА($A$1:$A$10)-1;A5));ПОИСК(СТРОКА($A$1:$A$10)-1;A5);""));2)
 
Я тоже подумал про похожий вариант, например про d4s5y87 - вот ответ тогда 45 или 87?
Если писать свою UDF то для 87 можно основываясь на приведённом коде при обнаружении цифры проверять и следующий символ, и если он тоже цифра - то есть результат, выходим.
 
Или 4? ))
 
Почему 4? Это никак не "первые две" :)
Изменено: Hugo - 4 Мар 2015 14:03:50
 
Hugo, увы UDF не использую.. ламер совсем, подскажите пожалуйста каким макаром прикрутить это? )
V, таких (d4s5y8) быть не должно, скопировал Вашу формулу, работает! ), но из названия R-25031 извлекает 03...
 
Про UDF читайте в приёмах, там в середине статьи про макросы. Там всё просто и доходчиво.
Изменено: Hugo - 4 Мар 2015 14:05:03
 
Понял, спасибо! )
 
Немного не точно рассказал маршрут, в общем вот тут:
http://www.planetaexcel.ru/techniques/3/59/
 
Цитата
Hugo написал: Почему 4? Это никак не "первые две"
да да, именно первые две! )
суть в том что, в артикуле эти 2 цифры, указываю ширину, вот эта то ширина важна при подсчете.. но эти артикулы разные, собсна как уже описал )
 
Цитата
@lexey написал: но из названия R-25031 извлекает 03...
написано же формула массива, т.е. вводится тремя клавишами ctrl+shift+enter, а не стандартной enter
Изменено: V - 4 Мар 2015 14:36:14
 
Цитата
Hugo написал: Почему 4? Это никак не "первые две"
Но они же не подряд идут в этом варианте))
 
Цитата
V написал: вводится тремя клавишами   ctrl+shift+enterr
Извините, и это буду учить )
 
Hugo, спасибо! немного разобрался с UDF, функция отдельно работает, в составе =LEFT(ExtractNumber(A1),2), не хочет..
 
если у вас эксель русский то вместо LEFT нужно ЛЕВСИМВ и возможно вместо запятой точка с запятой.
 
Вариант без всяких Left():
Код
Public Function ExtractNumberX(s As String, l As Long)
    Dim i As Long, str As String
    For i = 1 To Len(s)
        If InStr(1, "1234567890,", Mid(s, i, 1)) <> 0 Then str = str & Mid(s, i, 1)
        If Len(str) = l Then ExtractNumberX = str: Exit Function
    Next
    ExtractNumberX = str
End Function

В ячейке =ExtractNumberX(A1,2)
Разделитель аргументов ставьте свой.
Если количество цифр не наберётся (это второй аргумент) - выведет сколько набралось.
Изменено: Hugo - 4 Мар 2015 18:43:02
 
Я ослеп? Все решают задачу, а примера с данными не вижу... Достигли уровня безсознательного восприятия?
 
Цитата
@lexey написал: пример: R3287FG или 47320, или K-5963
 
Тоже решил размяться на функциях:
Код
=ПСТР(A1;ПОИСКПОЗ(ИСТИНА;(-ПСТР(A1;СТРОКА($1:$99);2)<0);0);2)
Вводить как формулу массива.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Hugo написал: Вариант без всяких Left():
работает!!! Спасибо!
как только не вводил, как только не мучил! ) всё работает!
Правда ночью нашел еще поставщика у которого артикул не связан с размером, расстройству не было предела, хотя можно потом свои артикулы присваивать, но это одевать штаны через голову..

V, The_Prist, Спасибо! но я так с массивом и не разобрался, наверное забыл уточнить то что, я прям ламер ламер ), но разбираться буду, думается что это не последняя задача для калькулятора, мало ли что еще задуматься туда накрутить для автоматизации.

Ребята спасибо!
Вы тут все гении! )
Страницы: 1
Читают тему (гостей: 1)