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

Вход

Регистрация

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

 

= Мир MS Excel/Как из текстовой записи выделить цифры. - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как из текстовой записи выделить цифры. (Формулы/Formulas)
Как из текстовой записи выделить цифры.
buchlotnik Дата: Понедельник, 11.09.2017, 10:40 | Сообщение № 21
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Юрий_Нд, что именно не работает? [vba]
Код
Function рег_извлечь(t$, p$, Optional n = 1)
    Application.Volatile 'функцию пересчитывать с любым событием
    With CreateObject("VBScript.RegExp") 'подключаем регулярки
        If n > 1 Then .Global = True 'если указан не первый номер вхождения - указываем регулярке находить все вхождения
        .Pattern = p ' берём паттерн регулярки из второго аргумента
        рег_извлечь = .Execute(t)(n - 1) ' извлекаем из первого аргумента по патттерну из второго аргумента вхождение по номеру из третьего аргумента
    End With
End Function
[/vba]
К сообщению приложен файл: 1830181.xlsm (14.7 Kb)
 
Ответить
СообщениеЮрий_Нд, что именно не работает? [vba]
Код
Function рег_извлечь(t$, p$, Optional n = 1)
    Application.Volatile 'функцию пересчитывать с любым событием
    With CreateObject("VBScript.RegExp") 'подключаем регулярки
        If n > 1 Then .Global = True 'если указан не первый номер вхождения - указываем регулярке находить все вхождения
        .Pattern = p ' берём паттерн регулярки из второго аргумента
        рег_извлечь = .Execute(t)(n - 1) ' извлекаем из первого аргумента по патттерну из второго аргумента вхождение по номеру из третьего аргумента
    End With
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 11.09.2017 в 10:40
and_evg Дата: Понедельник, 11.09.2017, 11:16 | Сообщение № 22
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
buchlotnik, У вас в строке формул было:
Код
='\\share-office\Архивы хранилища\Диспетчерская знаний\Наука\Excel\ПЭТ_надстройка\ПЭТ_1.2.xlam'!рег_извлечь($D4;"\d+";СТОЛБЕЦ(A1))

а должно быть (я так понимаю):
Код
=рег_извлечь($D4;"\d+";СТОЛБЕЦ(A1))


Сообщение отредактировал and_evg - Понедельник, 11.09.2017, 11:27
 
Ответить
Сообщениеbuchlotnik, У вас в строке формул было:
Код
='\\share-office\Архивы хранилища\Диспетчерская знаний\Наука\Excel\ПЭТ_надстройка\ПЭТ_1.2.xlam'!рег_извлечь($D4;"\d+";СТОЛБЕЦ(A1))

а должно быть (я так понимаю):
Код
=рег_извлечь($D4;"\d+";СТОЛБЕЦ(A1))

Автор - and_evg
Дата добавления - 11.09.2017 в 11:16
buchlotnik Дата: Понедельник, 11.09.2017, 11:27 | Сообщение № 23
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
and_evg, Андрей, вот оно в чём дело! понял - функцию из своей надстройки цапнул, а связи не проверил; вы совершенно правы, должно быть
Код
=рег_извлечь($D4;"\d+";СТОЛБЕЦ(A1))
 
Ответить
Сообщениеand_evg, Андрей, вот оно в чём дело! понял - функцию из своей надстройки цапнул, а связи не проверил; вы совершенно правы, должно быть
Код
=рег_извлечь($D4;"\d+";СТОЛБЕЦ(A1))

Автор - buchlotnik
Дата добавления - 11.09.2017 в 11:27
InExSu Дата: Понедельник, 11.09.2017, 11:30 | Сообщение № 24
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
кто же не поможет с постом номер шесть

80% Одесса.
необходимо подключить к проекту VBA ссылку на библиотеку «Microsoft VBScript Regular Expression», для чего в редакторе VBA выбираем Tools - References...
В открывшемся окне «References» находим строку «Microsoft VBScript Regular Expression 5.5» (если у вас ее нет, то строку «Microsoft VBScript Regular Expression 1.0»), отмечаем ее галочкой и нажимаем «ОК».
[vba]
Код
Sub test_рег_извлечь()
For i = 1 To 3
Строка = рег_извлечь("1-23-4", "\d{1,3}", i)
MsgBox Строка
Next
End Sub
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac

Сообщение отредактировал InExSu - Понедельник, 11.09.2017, 11:31
 
Ответить
Сообщение
кто же не поможет с постом номер шесть

80% Одесса.
необходимо подключить к проекту VBA ссылку на библиотеку «Microsoft VBScript Regular Expression», для чего в редакторе VBA выбираем Tools - References...
В открывшемся окне «References» находим строку «Microsoft VBScript Regular Expression 5.5» (если у вас ее нет, то строку «Microsoft VBScript Regular Expression 1.0»), отмечаем ее галочкой и нажимаем «ОК».
[vba]
Код
Sub test_рег_извлечь()
For i = 1 To 3
Строка = рег_извлечь("1-23-4", "\d{1,3}", i)
MsgBox Строка
Next
End Sub
[/vba]

Автор - InExSu
Дата добавления - 11.09.2017 в 11:30
and_evg Дата: Понедельник, 11.09.2017, 11:31 | Сообщение № 25
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
buchlotnik, А не подскажите ссылку, что бы было более или менее доходчиво написано про эти "регулярки"?
 
Ответить
Сообщениеbuchlotnik, А не подскажите ссылку, что бы было более или менее доходчиво написано про эти "регулярки"?

Автор - and_evg
Дата добавления - 11.09.2017 в 11:31
buchlotnik Дата: Понедельник, 11.09.2017, 11:36 | Сообщение № 26
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
and_evg, я в своё время по вот этой ссылке учился http://www.script-coding.com/WSH/RegExp.html - а так, по опыту, писать, писать и ещё раз писать :)
 
Ответить
Сообщениеand_evg, я в своё время по вот этой ссылке учился http://www.script-coding.com/WSH/RegExp.html - а так, по опыту, писать, писать и ещё раз писать :)

Автор - buchlotnik
Дата добавления - 11.09.2017 в 11:36
Юрий_Нд Дата: Понедельник, 11.09.2017, 19:09 | Сообщение № 27
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Юрий_Нд, что именно не работает?

функцию из своей надстройки цапнул, а связи не проверил;

Вот именно это я и подразумевал, когда писал
Цитата Юрий_Нд, 09.09.2017 в 23:06, в сообщении № 7 ()
Если я не ошибаюсь, то в Вашей функции Вы использовали объекты, которые остались на Вашем компе.

Но тогда, как для человека, который только вчера узнал об объектах в программировании, я не смог так аргументированно объяснить, как это сделал and_evg.
Простите за замечание. Далее по делу.
Ещё раз Простите, но сейчас я должен взять в руки такие нелюбимые Вами клещи и вытягивать следующее.
Согласитесь, что предложенную Вами функцию, я могу применить тупо как черный ящик, у которого на входе входные аргументы, а на "выхлопе" то, что делает или возвращает Ваша функция. И в принципе, я совершенно не обязан знать какая кухня варится внутри этого чёрного ящика. По-моему это современный подход к программированию. Если не ошибаюсь в Экселе это называется модульным принципом.
Но если я не знаю, что на входе Вашей функции, и что на "выходе", то тогда стоимость Вашей подсказки почти равна нулю.
Из трех входных документов я худо-бедно разобрался, как мне кажется, с первым и последним, почти не сомневаюсь с тем, что "на выхлопе".
А вот что делать со вторым входным аргументом? Может подскажете?
 
Ответить
Сообщение
Юрий_Нд, что именно не работает?

функцию из своей надстройки цапнул, а связи не проверил;

Вот именно это я и подразумевал, когда писал
Цитата Юрий_Нд, 09.09.2017 в 23:06, в сообщении № 7 ()
Если я не ошибаюсь, то в Вашей функции Вы использовали объекты, которые остались на Вашем компе.

Но тогда, как для человека, который только вчера узнал об объектах в программировании, я не смог так аргументированно объяснить, как это сделал and_evg.
Простите за замечание. Далее по делу.
Ещё раз Простите, но сейчас я должен взять в руки такие нелюбимые Вами клещи и вытягивать следующее.
Согласитесь, что предложенную Вами функцию, я могу применить тупо как черный ящик, у которого на входе входные аргументы, а на "выхлопе" то, что делает или возвращает Ваша функция. И в принципе, я совершенно не обязан знать какая кухня варится внутри этого чёрного ящика. По-моему это современный подход к программированию. Если не ошибаюсь в Экселе это называется модульным принципом.
Но если я не знаю, что на входе Вашей функции, и что на "выходе", то тогда стоимость Вашей подсказки почти равна нулю.
Из трех входных документов я худо-бедно разобрался, как мне кажется, с первым и последним, почти не сомневаюсь с тем, что "на выхлопе".
А вот что делать со вторым входным аргументом? Может подскажете?

Автор - Юрий_Нд
Дата добавления - 11.09.2017 в 19:09
buchlotnik Дата: Понедельник, 11.09.2017, 19:36 | Сообщение № 28
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
что делать со вторым входным аргументом?
это не что иное как паттерн регулярного выражения, в данном случае "\d+" - читается очень просто - "\d" - это digit - цифра,"+" - это один или более символов, т.е. запись означает последовательность из одной или более цифр - это функция и ищет - последовательности из цифр, а [vba]
Код
.Execute(t)(n - 1)
[/vba] вынимает вхождение с указанным номером, n-1 потому что у прогеров нумерация с нуля, как-то так :)


Сообщение отредактировал buchlotnik - Понедельник, 11.09.2017, 19:59
 
Ответить
Сообщение
Цитата
что делать со вторым входным аргументом?
это не что иное как паттерн регулярного выражения, в данном случае "\d+" - читается очень просто - "\d" - это digit - цифра,"+" - это один или более символов, т.е. запись означает последовательность из одной или более цифр - это функция и ищет - последовательности из цифр, а [vba]
Код
.Execute(t)(n - 1)
[/vba] вынимает вхождение с указанным номером, n-1 потому что у прогеров нумерация с нуля, как-то так :)

Автор - buchlotnik
Дата добавления - 11.09.2017 в 19:36
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как из текстовой записи выделить цифры. (Формулы/Formulas)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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