Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Найти 10-и значную цифру в тексте - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти 10-и значную цифру в тексте (Макросы/Sub)
Найти 10-и значную цифру в тексте
BNPYC Дата: Пятница, 22.01.2016, 19:28 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, уважаемые Форумчене!
Прошу помочь с решением проблемы:
Есть реестр платежей из него нужно вытащить 10 значный лицевой счет и вставить в правую ячейку.
К сообщению приложен файл: 6951478.xlsx(11Kb)
 
Ответить
СообщениеДобрый день, уважаемые Форумчене!
Прошу помочь с решением проблемы:
Есть реестр платежей из него нужно вытащить 10 значный лицевой счет и вставить в правую ячейку.

Автор - BNPYC
Дата добавления - 22.01.2016 в 19:28
Pelena Дата: Пятница, 22.01.2016, 19:48 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 10395
Репутация: 2353 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
Здравствуйте.
Так подойдёт? Формула массива
Код
=МАКС(ЕСЛИОШИБКА(--ПСТР(B2;СТРОКА($1:$255);10);0))
К сообщению приложен файл: 7885626.xlsx(12Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Так подойдёт? Формула массива
Код
=МАКС(ЕСЛИОШИБКА(--ПСТР(B2;СТРОКА($1:$255);10);0))

Автор - Pelena
Дата добавления - 22.01.2016 в 19:48
BNPYC Дата: Пятница, 22.01.2016, 20:01 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, спасибо! Работает!


Сообщение отредактировал BNPYC - Пятница, 22.01.2016, 20:08
 
Ответить
СообщениеPelena, спасибо! Работает!

Автор - BNPYC
Дата добавления - 22.01.2016 в 20:01
RAN Дата: Пятница, 22.01.2016, 20:07 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4297
Репутация: 839 ±
Замечаний: 0% ±

2010
А что это за зверь, 10-и значная цифра? Вот бы хоть краем глаза...


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА что это за зверь, 10-и значная цифра? Вот бы хоть краем глаза...

Автор - RAN
Дата добавления - 22.01.2016 в 20:07
Udik Дата: Пятница, 22.01.2016, 20:08 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1293
Репутация: 161 ±
Замечаний: 0% ±

Excel 2013
она(формула) не работает

Вы её как массив ввели? Ctrl+Shift+Enter


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
она(формула) не работает

Вы её как массив ввели? Ctrl+Shift+Enter

Автор - Udik
Дата добавления - 22.01.2016 в 20:08
_Boroda_ Дата: Пятница, 22.01.2016, 20:09 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 9803
Репутация: 4139 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
она(формула) не работает
Это формула массива. Вводится она одновременным нажатием Контрл Шифт Ентер. И работать будет только в случае, если у Вас л/с не начинается с кучи нулей (вот такого л/с 0000250200 быть не должно), а р/с наоборот, начинается с кучи нулей (вот такого р/с 900000555588 быть не должно). Если у Вас всегда именно так, то все нормально. Если нет, то отпишитесь и приведите примеры.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
она(формула) не работает
Это формула массива. Вводится она одновременным нажатием Контрл Шифт Ентер. И работать будет только в случае, если у Вас л/с не начинается с кучи нулей (вот такого л/с 0000250200 быть не должно), а р/с наоборот, начинается с кучи нулей (вот такого р/с 900000555588 быть не должно). Если у Вас всегда именно так, то все нормально. Если нет, то отпишитесь и приведите примеры.

Автор - _Boroda_
Дата добавления - 22.01.2016 в 20:09
BNPYC Дата: Пятница, 22.01.2016, 20:10 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, не как массив, исправился, спасибо!
 
Ответить
СообщениеUdik, не как массив, исправился, спасибо!

Автор - BNPYC
Дата добавления - 22.01.2016 в 20:10
gling Дата: Пятница, 22.01.2016, 20:12 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1392
Репутация: 341 ±
Замечаний: 0% ±

2010
Формула массива
Вводится одновременным нажатием Shift+Ctrl+Enter, установите курсор к строку формул и нажмите одновременно 3 клавиши.
 
Ответить
Сообщение
Формула массива
Вводится одновременным нажатием Shift+Ctrl+Enter, установите курсор к строку формул и нажмите одновременно 3 клавиши.

Автор - gling
Дата добавления - 22.01.2016 в 20:12
BNPYC Дата: Пятница, 22.01.2016, 20:12 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, лицевые счета начинаются с 400,500,...900. Спасибо за помощь! Неделю искал решение.
 
Ответить
Сообщение_Boroda_, лицевые счета начинаются с 400,500,...900. Спасибо за помощь! Неделю искал решение.

Автор - BNPYC
Дата добавления - 22.01.2016 в 20:12
sv2014 Дата: Пятница, 22.01.2016, 22:25 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 37 ±
Замечаний: 0% ±

Excel 2013
BNPYC, добрый вечер ,вариант с функцией zzz в столбце F

[vba]
Код
Function zzz(t$)
     Dim i&
    For i = Len(t) - 9 To 1 Step -1
        If Mid$(t, i, 10) Like String(10, "#") Then zzz = Mid$(t, i, 10): Exit Function
    Next
    zzz = ""
End Function
[/vba]
К сообщению приложен файл: example_23_01_2.xls(40Kb)
 
Ответить
СообщениеBNPYC, добрый вечер ,вариант с функцией zzz в столбце F

[vba]
Код
Function zzz(t$)
     Dim i&
    For i = Len(t) - 9 To 1 Step -1
        If Mid$(t, i, 10) Like String(10, "#") Then zzz = Mid$(t, i, 10): Exit Function
    Next
    zzz = ""
End Function
[/vba]

Автор - sv2014
Дата добавления - 22.01.2016 в 22:25
BNPYC Дата: Суббота, 23.01.2016, 15:04 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
sv2014, Спасибо! Только если я ячейке нет лицевого счета(такое встречается), она берет расчетный счет (11 знаков) копирует 10 знаком и вставляет это 10е число.


Сообщение отредактировал BNPYC - Суббота, 23.01.2016, 15:09
 
Ответить
Сообщениеsv2014, Спасибо! Только если я ячейке нет лицевого счета(такое встречается), она берет расчетный счет (11 знаков) копирует 10 знаком и вставляет это 10е число.

Автор - BNPYC
Дата добавления - 23.01.2016 в 15:04
RAN Дата: Суббота, 23.01.2016, 16:43 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4297
Репутация: 839 ±
Замечаний: 0% ±

2010
Поразмялся регулярками
[vba]
Код
Function Мяу$(r As Range)
    Dim objRegExp As Object
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Pattern = "(?:^|\D)(\d{10})(?:$|\D)"
    If objRegExp.test(r(1).Value) Then
        Мяу = objRegExp.Execute(r(1).Value)(0).SubMatches(0)
    End If
End Function
[/vba]
Вытягивает первое десятизначное число.
Запись вида №1234567890 не помеха.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПоразмялся регулярками
[vba]
Код
Function Мяу$(r As Range)
    Dim objRegExp As Object
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Pattern = "(?:^|\D)(\d{10})(?:$|\D)"
    If objRegExp.test(r(1).Value) Then
        Мяу = objRegExp.Execute(r(1).Value)(0).SubMatches(0)
    End If
End Function
[/vba]
Вытягивает первое десятизначное число.
Запись вида №1234567890 не помеха.

Автор - RAN
Дата добавления - 23.01.2016 в 16:43
BNPYC Дата: Суббота, 23.01.2016, 17:09 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, Спасибо! Я только начал изучать VBA, много не понимаю. Результат почему-то не видит функция ВПР, а после формулы массива, написанной уважаемой Pelena ВПР работает hands
 
Ответить
СообщениеRAN, Спасибо! Я только начал изучать VBA, много не понимаю. Результат почему-то не видит функция ВПР, а после формулы массива, написанной уважаемой Pelena ВПР работает hands

Автор - BNPYC
Дата добавления - 23.01.2016 в 17:09
_Boroda_ Дата: Суббота, 23.01.2016, 18:25 | Сообщение № 14
Группа: Модераторы
Ранг: Экселист
Сообщений: 9803
Репутация: 4139 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Результат почему-то не видит функция ВПР

Дело в том, что результат выводится в виде текста, а у Лены - в виде числа. А Вы, судя по всему, ищете ВПР-ом именно числовое значение.
Есть много вариантов решения, один из простейших - если Вы напишете не
Код
=Мяу(B2)
, а
Код
=--Мяу(B2)
, то это будет число.
Что такое два минуса можно почитать статью здесь
http://www.excelworld.ru/publ/hacks/tricks/17-1-0-9


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Результат почему-то не видит функция ВПР

Дело в том, что результат выводится в виде текста, а у Лены - в виде числа. А Вы, судя по всему, ищете ВПР-ом именно числовое значение.
Есть много вариантов решения, один из простейших - если Вы напишете не
Код
=Мяу(B2)
, а
Код
=--Мяу(B2)
, то это будет число.
Что такое два минуса можно почитать статью здесь
http://www.excelworld.ru/publ/hacks/tricks/17-1-0-9

Автор - _Boroda_
Дата добавления - 23.01.2016 в 18:25
sv2014 Дата: Суббота, 23.01.2016, 18:34 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 156
Репутация: 37 ±
Замечаний: 0% ±

Excel 2013
RAN, добрый вечер,у Вас в функции довольно удачный паттерн( шаблон),вот более короткая версия Вашей функции
в столбце H
[vba]
Код
Function Мяу1$(r As Range)
    With CreateObject("VBScript.RegExp"): .Pattern = "(?:^|\D)(\d{10})(?:$|\D)"
    If .test(r(1).Value) Then Мяу1 = .Execute(r(1).Value)(0).SubMatches(0)
    End With
End Function
[/vba]
К сообщению приложен файл: 1933218.xls(44Kb)
 
Ответить
СообщениеRAN, добрый вечер,у Вас в функции довольно удачный паттерн( шаблон),вот более короткая версия Вашей функции
в столбце H
[vba]
Код
Function Мяу1$(r As Range)
    With CreateObject("VBScript.RegExp"): .Pattern = "(?:^|\D)(\d{10})(?:$|\D)"
    If .test(r(1).Value) Then Мяу1 = .Execute(r(1).Value)(0).SubMatches(0)
    End With
End Function
[/vba]

Автор - sv2014
Дата добавления - 23.01.2016 в 18:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти 10-и значную цифру в тексте (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!