Необходимо в столбец B добавить значение Вольт, в С значение мкФ, в столбец D значение %.
Те нужна формула, которая перебирает символы, пока не найдет "В" (для Вольт). Формула нашла, обрадовалась, и забрала в столбец B цифры от искомого В до пробела справа налево.... Так же с емкостью, мкф. Формула нашла букву М и стырила в свой столбец цифры слева от себя до пробела. Не буду повторять для %
Необходимо в столбец B добавить значение Вольт, в С значение мкФ, в столбец D значение %.
Те нужна формула, которая перебирает символы, пока не найдет "В" (для Вольт). Формула нашла, обрадовалась, и забрала в столбец B цифры от искомого В до пробела справа налево.... Так же с емкостью, мкф. Формула нашла букву М и стырила в свой столбец цифры слева от себя до пробела. Не буду повторять для %
ikki, процентов на 30 разобрался. Но работает, и работает, как доктор прописал.
Хочу выразить Вам огромную признательность, сидел с 8ми вечера до вот семи утра, пытался решить эту проблему.
Делается сайт, для которого нужна унификация значений исходного прайса для проверки наличия товара на складе. Вы для меня эту проблему решили, за что огромное искреннее спасибо. Теперь можно идти вперед, проблем вроде с сайтом не осталось (ттт), надеюсь, к концу месяца запущу свой проект.
И ещё раз - ОГРОМНОЕ спасибо!
ikki, процентов на 30 разобрался. Но работает, и работает, как доктор прописал.
Хочу выразить Вам огромную признательность, сидел с 8ми вечера до вот семи утра, пытался решить эту проблему.
Делается сайт, для которого нужна унификация значений исходного прайса для проверки наличия товара на складе. Вы для меня эту проблему решили, за что огромное искреннее спасибо. Теперь можно идти вперед, проблем вроде с сайтом не осталось (ттт), надеюсь, к концу месяца запущу свой проект.
интересная у вас унификация... у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?
пс. если на большом объеме будет притормаживать - лучше переписать код в виде макроса. будет меньше накладных расходов на создание объектов и выгрузку результата. значительно меньше.
интересная у вас унификация... у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?
пс. если на большом объеме будет притормаживать - лучше переписать код в виде макроса. будет меньше накладных расходов на создание объектов и выгрузку результата. значительно меньше.ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Вторник, 11.02.2014, 07:05
А можно (простите за назойливость) попросить объяснить, как Вы это наколдовали? Например, если я захочу взять те же значения у резисторов (Ватт и ом)
[vba]
Код
Function емкость(s$) '- объявили функцию. With CreateObject("vbscript.regexp")
'- Создали объект Regular Expession
.Pattern = "\s(\d+[.,]\d+)МК?Ф?\s" 'шаблон... вот тут сильное колдунство... если я захочу допустим ту же штуку провернуть с параметром сопротивления, Ом, то .Pattern = "\s(\d+[.,]\d+)Ом\s"
.ignoreCase = False 'игнорируем какой то случай...
Set m = .Execute(s & " ") 'Убираем значение емкости... до пробела... уй, нет, тут не пойму
If m.Count Then емкость = m(0).submatches(0) Else емкость = "" End With End Function
[/vba]
А можно (простите за назойливость) попросить объяснить, как Вы это наколдовали? Например, если я захочу взять те же значения у резисторов (Ватт и ом)
[vba]
Код
Function емкость(s$) '- объявили функцию. With CreateObject("vbscript.regexp")
'- Создали объект Regular Expession
.Pattern = "\s(\d+[.,]\d+)МК?Ф?\s" 'шаблон... вот тут сильное колдунство... если я захочу допустим ту же штуку провернуть с параметром сопротивления, Ом, то .Pattern = "\s(\d+[.,]\d+)Ом\s"
.ignoreCase = False 'игнорируем какой то случай...
Set m = .Execute(s & " ") 'Убираем значение емкости... до пробела... уй, нет, тут не пойму
If m.Count Then емкость = m(0).submatches(0) Else емкость = "" End With End Function
у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?
ну... емкость всегда в микрофарадах. и всегда от 0,01 до 50 мкф.
напряжение - от 6,3в до нескольких тысяч...
Вот сижу, думаю, если мне придется допустим искать емкость в пикофарадах, пф, как быть =) но да ничего, разберусь... после 12 фактически часов это как воды напиться =) лед тронулся, господа присяжные заседатели! =)
Цитата
у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?
ну... емкость всегда в микрофарадах. и всегда от 0,01 до 50 мкф.
напряжение - от 6,3в до нескольких тысяч...
Вот сижу, думаю, если мне придется допустим искать емкость в пикофарадах, пф, как быть =) но да ничего, разберусь... после 12 фактически часов это как воды напиться =) лед тронулся, господа присяжные заседатели! =)PythonOleg
совершенно верно. почти. "почти" - потому что такой шаблон будет искать числа обязательно с десятичным разделителем - точкой или запятой. числа без разделителя он не найдёт. но сравните этот шаблон с тем, что используется в функции "проценты" - и выберите подходящий
нет говорим объекту regexp о том, что нам не нужно игнорировать регистр букв т.е. "Ом" и "ОМ" - это разные строки. первую найдёт, вторую - пропустит. можно и игнорировать. соответственно, True
Set m = .Execute(s & " ") Убираем значение емкости... до пробела...
нет выполняем (execute) наш шаблон для нашей строки. перед выполнением прицепляем к концу строки один пробел - ибо шаблон такой (метасимвол \s означает "любой пробельный символ" (не только пробел!)) результаты выполнения записываем в объект m
совершенно верно. почти. "почти" - потому что такой шаблон будет искать числа обязательно с десятичным разделителем - точкой или запятой. числа без разделителя он не найдёт. но сравните этот шаблон с тем, что используется в функции "проценты" - и выберите подходящий
нет говорим объекту regexp о том, что нам не нужно игнорировать регистр букв т.е. "Ом" и "ОМ" - это разные строки. первую найдёт, вторую - пропустит. можно и игнорировать. соответственно, True
Set m = .Execute(s & " ") Убираем значение емкости... до пробела...
нет выполняем (execute) наш шаблон для нашей строки. перед выполнением прицепляем к концу строки один пробел - ибо шаблон такой (метасимвол \s означает "любой пробельный символ" (не только пробел!)) результаты выполнения записываем в объект mikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Вторник, 11.02.2014, 07:21
PythonOleg, попробуйте вот так.. может белиберда получиться.. будет работать только, если обозначение "МКФ" или "МК" или "М", и только если русскими, и только если в строке перед ним не будет других "М" или "МК", и только если значение емкости состоит из 3-4 символов (запятая и точка всчет)..
PythonOleg, попробуйте вот так.. может белиберда получиться.. будет работать только, если обозначение "МКФ" или "МК" или "М", и только если русскими, и только если в строке перед ним не будет других "М" или "МК", и только если значение емкости состоит из 3-4 символов (запятая и точка всчет).. forall