Добрый день уважаемые форумчане! Помогите решить проблемку у меня в файле с выборкой нужно сделать так , чтобы не проставлять самому диаметры по фланцам, чтобы формулой в тексте находит из ячейки А 1" , 10" 16" 18" 1/2"и рядом в ячейке D писалось 1 , 10 16 18 0,5 просто числа без текста где есть 1/2 чтоб в другой ячейке стало 0,5 И также чтоб можно было и по классам сделать из ячейки А тесть Class 150 Class 1500 Class 900 Class 600 Class 2500 и на против в ячейке Е проставлялись просто цифры без какого либо текста! Заранее спасибо!
Добрый день уважаемые форумчане! Помогите решить проблемку у меня в файле с выборкой нужно сделать так , чтобы не проставлять самому диаметры по фланцам, чтобы формулой в тексте находит из ячейки А 1" , 10" 16" 18" 1/2"и рядом в ячейке D писалось 1 , 10 16 18 0,5 просто числа без текста где есть 1/2 чтоб в другой ячейке стало 0,5 И также чтоб можно было и по классам сделать из ячейки А тесть Class 150 Class 1500 Class 900 Class 600 Class 2500 и на против в ячейке Е проставлялись просто цифры без какого либо текста! Заранее спасибо!akademik90
зверинец по символам и пробелам жуткий - сколько смог вынул на регулярках [vba]
Код
Function diam(t$) With CreateObject("VBScript.Regexp") .Pattern = "[\d\s\/]+(?=""|''|”)" diam = .Execute(t)(0) End With End Function
Function class(t$) With CreateObject("VBScript.Regexp") .Pattern = "(Class|class|ANSI)\s[A-Za-z\s]*[\d\s]+" class = .Execute(t)(0) .Pattern = "\D" .Global = True class = .Replace(class, "") End With End Function
[/vba]
UPD файл перезалил
зверинец по символам и пробелам жуткий - сколько смог вынул на регулярках [vba]
Код
Function diam(t$) With CreateObject("VBScript.Regexp") .Pattern = "[\d\s\/]+(?=""|''|”)" diam = .Execute(t)(0) End With End Function
Function class(t$) With CreateObject("VBScript.Regexp") .Pattern = "(Class|class|ANSI)\s[A-Za-z\s]*[\d\s]+" class = .Execute(t)(0) .Pattern = "\D" .Global = True class = .Replace(class, "") End With End Function
buchlotnik, В свой адрес не принимайте только. :-) akademik90, размеры стадартизованы, можно наверное их справочником сделать и элеменатрным поиском и заменой на цифирку без ковычек и десятиченую дробь? или я не учитываю количесво возможных вариантов?
buchlotnik, В свой адрес не принимайте только. :-) akademik90, размеры стадартизованы, можно наверное их справочником сделать и элеменатрным поиском и заменой на цифирку без ковычек и десятиченую дробь? или я не учитываю количесво возможных вариантов?
а вот возьму да и приму - покажите в файле работоспособность ваших формул >( с учётом того, что кавычки встречаются двух видов, да ещё и кавычки в виде двух апострофов, не считая мракобесия с пробелами, я не сильно понимаю как должен выглядеть словарь для "элементарного поиска"
для классов (обращаю внимание что само слово там далеко не всегда одиноко, и не понятно что делать с ANSI) при наличии фиксированного списка на формулах проще
а вот возьму да и приму - покажите в файле работоспособность ваших формул >( с учётом того, что кавычки встречаются двух видов, да ещё и кавычки в виде двух апострофов, не считая мракобесия с пробелами, я не сильно понимаю как должен выглядеть словарь для "элементарного поиска"
для классов (обращаю внимание что само слово там далеко не всегда одиноко, и не понятно что делать с ANSI) при наличии фиксированного списка на формулах проще
buchlotnik, Ну я ж просил :-) . Исходные действительно на чистоту не исследовал, просто предположил, при этом накидал формулу по быстрому, что б прсто проверить что заработает , так сказать проверить гипотезу. Ну и все от задачи зависит. так что не будем спорить в старый новый год :-). C Наступающим.
buchlotnik, Ну я ж просил :-) . Исходные действительно на чистоту не исследовал, просто предположил, при этом накидал формулу по быстрому, что б прсто проверить что заработает , так сказать проверить гипотезу. Ну и все от задачи зависит. так что не будем спорить в старый новый год :-). C Наступающим.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Function diam(t$) With CreateObject("VBScript.Regexp") .Pattern = "[\d\s\/]+(?=""|''|”)" diam = .Execute(t)(0) End With End Function
Function class(t$) With CreateObject("VBScript.Regexp") .Pattern = "(Class|class|ANSI)\s[A-Za-z\s]*[\d\s]+" class = .Execute(t)(0) .Pattern = "\D" .Global = True class = .Replace(class, "") End With End Function
КАК ОНА РАБОТАЕТ ? Я ТАК И НЕ ПОНЯЛ МОЖЕШЬ ОБЪЯСНИТЬ . ИЛИ СВОЮ ФОРМУЛУ ОБЪЯСНИТЬ КАК СДЕЛАТЬ АНАЛОГИЮ!
Function diam(t$) With CreateObject("VBScript.Regexp") .Pattern = "[\d\s\/]+(?=""|''|”)" diam = .Execute(t)(0) End With End Function
Function class(t$) With CreateObject("VBScript.Regexp") .Pattern = "(Class|class|ANSI)\s[A-Za-z\s]*[\d\s]+" class = .Execute(t)(0) .Pattern = "\D" .Global = True class = .Replace(class, "") End With End Function
КАК ОНА РАБОТАЕТ ? Я ТАК И НЕ ПОНЯЛ МОЖЕШЬ ОБЪЯСНИТЬ . ИЛИ СВОЮ ФОРМУЛУ ОБЪЯСНИТЬ КАК СДЕЛАТЬ АНАЛОГИЮ!akademik90
HOC EST VIVERE BIS, VITA POSSE PRIORE FRUI
Сообщение отредактировал akademik90 - Суббота, 14.01.2017, 13:23
В смысле "как"? Это UDF (пользовательская функция) её, точнее ИХ - тут их две - нужно добавить в программный модуль файла и использовать. Чтобы делать какую-то аналогию необходимо изучать регулярные выражения
Цитата
КАК ОНА РАБОТАЕТ ?
В смысле "как"? Это UDF (пользовательская функция) её, точнее ИХ - тут их две - нужно добавить в программный модуль файла и использовать. Чтобы делать какую-то аналогию необходимо изучать регулярные выраженияbuchlotnik
Сообщение отредактировал buchlotnik - Воскресенье, 15.01.2017, 00:27
ну как нету-то? если я вам в посте привожу ПРОГРАММНЫЙ КОД пользовательской функции... И про необходимость добавить в модуль написал - вы реально не читаете, что вам пишут?
Цитата
нету же макросов?
ну как нету-то? если я вам в посте привожу ПРОГРАММНЫЙ КОД пользовательской функции... И про необходимость добавить в модуль написал - вы реально не читаете, что вам пишут?buchlotnik
ну как нету-то? если я вам в посте привожу ПРОГРАММНЫЙ КОД пользовательской функции... И про необходимость добавить в модуль написал - вы реально не читаете, что вам пишут?
Я все читаю ! Скачал Ваш файл , зашел в Макросы а там ничего нет вот и удивился! Может я и что то недопонимаю так как я не асс в Эксел. Подскажите начинающему пользователю,
ну как нету-то? если я вам в посте привожу ПРОГРАММНЫЙ КОД пользовательской функции... И про необходимость добавить в модуль написал - вы реально не читаете, что вам пишут?
Я все читаю ! Скачал Ваш файл , зашел в Макросы а там ничего нет вот и удивился! Может я и что то недопонимаю так как я не асс в Эксел. Подскажите начинающему пользователю,
Применил Вашу формулу ,почти все идеально, не пойму одно : Везде где есть 1/4, 3/4, 1 1/4, 1 3/4, формула везде ставит 4 НЕ могу понять. Хотя там нормально прописаны КАВЫЧКИ !
Pelena, Wasilich, buchlotnik, Посмотрите что ни так в этой формуле?
Применил Вашу формулу ,почти все идеально, не пойму одно : Везде где есть 1/4, 3/4, 1 1/4, 1 3/4, формула везде ставит 4 НЕ могу понять. Хотя там нормально прописаны КАВЫЧКИ !akademik90