Страницы: 1 2 След.
RSS
Выцепить цифры из содержимого ячейки
 
Всем привет.  
Задача такая:  
есть ячейки с таким содержимым:  
123234234  
kvjndkfvjn123123123dfvmldfvm  
123123123klsjdnksdjcn  
sdkjvndkfjvn123123123  
 
Как выбрать из них только цифры?
 
Вот на примитивном уровне
 
а вот сюда еще загляните... взято с форума, автора к сожалению не записал...
 
а вот и автор - Лузер™  
вот и та тема  
http://www.planetaexcel.ru/forum.php?thread_id=5245
 
Пользовательская функция из ячейки "выцепляет" цифры и полученный String преобразует в число.  
Код
Public Function число(смесь As String)   
    Dim i As Long   
    For i = 1 To Len(смесь)   
        Select Case Asc(Mid(смесь, i, 1))   
        Case 48 To 57   
            число = число & Mid(смесь, i, 1)   
        End Select   
    Next   
    число = Val(число)   
End Function   

С уважением, Александр.
 
И в продолжение предыдущего поста.    
Переделал название функции.  
Код
Public Function ТолькоЦифра(смесь As String)   
    Dim i As Long   
    For i = 1 To Len(смесь)   
        Select Case Asc(Mid(смесь, i, 1))   
        Case 48 To 57   
            ТолькоЦифра = ТолькоЦифра & Mid(смесь, i, 1)   
        End Select   
    Next   
    ТолькоЦифра = Val(ТолькоЦифра)   
End Function   
   
А эта функция оставляет только текст.   
   
Public Function ТолькоТекст(смесь As String)   
    Dim i As Long   
    For i = 1 To Len(смесь)   
        Select Case Asc(Mid(смесь, i, 1))   
        Case 32 To 47   
           ТолькоТекст = ТолькоТекст & Mid(смесь, i, 1)   
              Case 58 To 255   
                ТолькоТекст = ТолькоТекст & Mid(смесь, i, 1)   
        End Select   
    Next   
End Function   

С уважением, Александр.
 
///всё формулы массива, строка в А4///  
 
1. позиция последней цифры в строке  
=МАКС(ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1)*СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4))))  
 
2. позиция первой цифры в строке  
=ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1);0)  
 
3. всего цифр в строке  
=СУММ(ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1)*1)  
/здесь первое *1 переводит текст цифры в число, второе *1 истину в 1/  
 
4. если цифры следуют друг за другом без разрывов, то извлечь текст числа из строки  
=ПСТР(A4;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1);0);СУММ(ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1)*1))  
/извлечь из строки символы(начиная от первой цифры, всего столько символов сколько цифр)/  
 
5. задача Лузера - извлечь текст от первой до последней цифры (если между цифрами есть буквы или знаки они сохраняются)  
=ПСТР(ЛЕВСИМВ(A4;МАКС(ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1)*СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)))));ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)*1);0);ДЛСТР(A4))
 
да, пятый вариант несколько изящнее, чем поиск цифр исходя из номера символа...  
интересно, а "прополоть" строку получится? :-)
 
{quote}{login=mazayZR}{date=03.09.2008 10:02}{thema=}{post}да, пятый вариант несколько изящнее, чем поиск цифр исходя из номера символа...  
интересно, а "прополоть" строку получится? :-){/post}{/quote}  
если сорняки в куче то без проблем, доехал до начала включил прополочную машину, начались помидоры выключил прополочную машину  
удалить текст от первой до последней цифры (если между цифрами есть буквы или знаки они удаляются)  
 
=ЛЕВСИМВ(A12;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(ПСТР(A12;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A12)));1)*1);0)-1) & ПСТР(A12;МАКС(ЕЧИСЛО(ПСТР(A12;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A12)));1)*1)*СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A12))))+1;ДЛСТР(A12))
 
непосредственно использовать 5 уже не прокатит  
9 вложенных функций эксель не кушает,  
поэтому и приведены формулы 1-3, вот их можно использовать как аргументы добавочных функций, что и используется в 4 и 5
 
Даны например:  
Локомотив-Барселона=5-0  
Локомотив Барселона=3-3  
Локомотив-Барселона=1:2  
Локомотив-Барселона 0-0  
 
а в другие ячейки надо чтоб выводило ТОЛЬКО числа,т.е.  
50  
33  
12  
00  
 
Подскажите как это сделлать в EXCEL'е !!!????
 
В данном случае подойдёт и    
=MID(A1;LEN(A1)-2;1)& RIGHT(A1;1)
 
{quote}{login=Веталь}{date=10.05.2010 03:00}{thema=Извлечение числе из текста}{post}  
Локомотив-Барселона=5-0!!!????{/post}{/quote}  
 
Неудачный пример :-)  
 
Если Локо не наклепает Барсе более десятка (или наоборот), то  
=ПСТР(ПРАВСИМВ(A1;3);1;1)&ПРАВСИМВ(A1;1)
 
Это как у Hugo получается...  
А если предварительно заменить " " на "=", то можно так:  
=ПСТР(A1;НАЙТИ("=";A1)+1;1)&ПРАВСИМВ(A1;1)
 
Можно и такое наваять с перепугу :)  
=ИНДЕКС(ПОДСТАВИТЬ(ПСТР(A1;НАЙТИ("=";A1)+1;99);{"-";":"};"");;ПОИСКПОЗ(МИН(ДЛСТР(ПОДСТАВИТЬ(ПСТР(A1;НАЙТИ("=";A1)+1;99);{"-";":"};"")));ДЛСТР(ПОДСТАВИТЬ(ПСТР(A1;НАЙТИ("=";A1)+1;99);{"-";":"};""));))
 
Огромное спасибо.  
 
а если после счёта как нибудь пробел пропишется то что делать???  
 
вроде есть какая то функция уудаления лишних пробелов!!!??  
 
Вот теперь напишите плиз полностью формулу с учетом этого замечания))
 
и если не всегда будет "=" перед счётом
 
С перепугу наваять можно такое(см. вложение) :-)  
 
kim, там когда нулёвку сгоняют перед счётом "=" нет, твоя формула знач# даёт :(  
 
Было-бы "=", тогда вообще огород городить не надо, формулу я постом выше приводил :-)  
 
22, 5 Кб
 
{quote}{login=}{date=10.05.2010 04:19}{thema=}{post}и если не всегда будет "=" перед счётом{/post}{/quote}Может Вы сразу всех тузов из рукава вытащите (я про пример, в котором есть все возможные условия)?  
НАМ попроще будет сделать то, что нужно ВАМ...
 
Ну при счёте 50:20 только    
=INDEX(SUBSTITUTE(MID(A1;FIND("=";A1)+1;99);{"-",":"};"");;MATCH(MIN(LEN(SUBSTITUTE(MID(A1;FIND("=";A1)+1;99);{"-",":"};"")));LEN(SUBSTITUTE(MID(A1;FIND("=";A1)+1;99);{"-",":"};""));))  
не глючит, но правда тогда 5020 тоже непонятно как расценивать :) (может 502-0)
 
Ну ладно, возьмём реальный счёт 11-1 :)
 
{quote}{login=Hugo}{date=10.05.2010 04:29}{thema=}{post}Ну ладно, возьмём реальный счёт 11-1 :){/post}{/quote}В игре "Локомотив-Барселона"?!
 
11-1 :)
 
Тьфу, хотел наоборот написать :) 1-11
 
Хотя в АА результат от этого не изменился.
 
{quote}{login=Serge 007}{date=10.05.2010 04:20}{thema=}{post}  
 
kim, там когда нулёвку сгоняют перед счётом "=" нет, твоя формула знач# даёт :(  
 
Было-бы "=", тогда вообще огород городить не надо, формулу я постом выше приводил :-)  
 
{/post}{/quote}  
Дык, мы ж уже договорились последние пробелы на "=" заменить...
 
Чтоб ничего не заменять, можно так:
 
1.) из ячейки с такими данными: 33/12 , в другие ячейки выводить число стоящее перед чертой, а в другую после, причем эти числа могут быть и однозначными(меньше 10) , и трёхзначимыми....  
 
2.) Возможно ли такое!?...смотрите прикрепл.файл....нужно чтоб в ячейки(жёлтые,на втором листе) автоматически вставлялись соответствующие значения с первого листа(т.е. 5-1-4-6...сверху вниз).....если непонятно обьяснил - спрашивайте
 
1) http://www.planetaexcel.ru/forum.php?thread_id=19680
 
{quote}{login=Hugo}{date=01.10.2010 04:19}{thema=}{post}1) http://www.planetaexcel.ru/forum.php?thread_id=19680{/post}{/quote}  
С ПЕРВЫм вопросом разобрался....со вторым знает кто чего??
Страницы: 1 2 След.
Наверх