Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2022, 10:40   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию найти и выделить число

Здравствуйте! Есть такие данные: 2010-868164.20-643-1646027030, где "2010-" и "-643-" всегда постоянны. "1646027030", "868164.20" могут изменяться.
Мне в ячейке нужно получить - 868164.20
Заранее спасибо! Знаю что задачка легкая для вас, но для меня время и не факт что получится)
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 27.01.2022, 11:30   #2
andreysuperman42
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 43
По умолчанию

Код:
Sub Proba()

    strValue$ = "2010-868164.2-643-1646027030"
    Range("A1").Value = Mid(strValue, 6, 8)
End Sub
andreysuperman42 вне форума Ответить с цитированием
Старый 27.01.2022, 12:05   #3
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Спасибо! Т.е. просто через функцию не получится?
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 27.01.2022, 12:13   #4
andreysuperman42
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 43
По умолчанию

Есть аналог функции mid в EXCEL
=ПСТР(A1;6;8)
andreysuperman42 вне форума Ответить с цитированием
Старый 27.01.2022, 12:44   #5
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от andreysuperman42 Посмотреть сообщение
Есть аналог функции mid в EXCEL
=ПСТР(A1;6;8)
тут поиск нужно включить, а как пока не понимаю
=ПСТР(A1;ПОИСК("-";A1;1);ПОИСК("-643-";A1;1)) в итоге: -4911.62-643-. Как лишнее убрать?
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 27.01.2022 в 13:08.
Iskin вне форума Ответить с цитированием
Старый 27.01.2022, 14:39   #6
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

просто замена 2010- и -643- на ничто
или на спец символы табуляции поможет?
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 27.01.2022, 15:44   #7
o5a
Пользователь
 
Регистрация: 27.01.2022
Сообщений: 11
По умолчанию

Вроде бы так...
Код:
Function extractNum(cl As Range)
t = cl.Find("2010-*-643").Cells(1).Value
t = Left(t, InStrRev(t, "-643") - 1)
pos = InStrRev(t, "2010-") + 4
t = Right(t, Len(t) - pos)
extractNum = t
End Function
Добавить эту функцию в модуль и в строке функции эксель набрать extractNum
o5a вне форума Ответить с цитированием
Старый 28.01.2022, 05:20   #8
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от o5a Посмотреть сообщение
Добавить эту функцию в модуль и в строке функции эксель набрать extractNum
Модуль это хорошо. Но файл нужно подгружать в программу, которая с макросами загрузку не разрешает
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 28.01.2022, 05:21   #9
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
просто замена 2010- и -643- на ничто
или на спец символы табуляции поможет?
наверное, увидеть бы)
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"2010-";"");"-643-1646027030";"") в таком виде отрабатывает. но это если данные постоянные. А хотелось бы по универсальнее )
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 28.01.2022 в 08:43.
Iskin вне форума Ответить с цитированием
Старый 28.01.2022, 17:45   #10
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 163
По умолчанию

Цитата:
Сообщение от Iskin Посмотреть сообщение
хотелось бы по универсальнее
можно так:
=MID(A1;FIND("2010-";A1)+LEN("2010-");FIND("-643-";A1)-LEN("-643-")-1)
или так:
=MID(A1;FIND("2010-";A1)+5;FIND("-643-";A1)-6)
для данных в ячейке A1
или, если данные всегда начинаются "2010-", так:
=MID(A1;6;FIND("-643-";A1)-6)

Последний раз редактировалось Elixi; 28.01.2022 в 17:53.
Elixi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить в массиве число каким-нибудь цветом - C++ marina46 Помощь студентам 4 20.03.2017 20:09
Программа в Си: построчная обработка текста - Выделить предпоследнее шестнадцатиричное число в строке. timpuk Помощь студентам 0 10.01.2014 23:13
Выделить из строки целое число demigod82 Общие вопросы C/C++ 1 21.04.2012 18:19
Паскаль - выделить целое число Вера123 Помощь студентам 3 18.06.2009 10:29
выделить цветом и подсчитать число слов,удовлетворяющих следующим условиям FANDREY21 Паскаль, Turbo Pascal, PascalABC.NET 2 02.02.2009 19:06