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

Вход

Регистрация

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

 

= Мир MS Excel/Извлечь значение перед символом из ячейки. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Извлечь значение перед символом из ячейки.
PythonOleg Дата: Вторник, 11.02.2014, 06:12 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Друзья, честно ломал себе голову, но ввиду убогости межушного ганглия ничего не надумал.

Задача такова:

В столбце А имеем список товара с параметрами.

К75-10 1,0МК 250В 10%
К75-10 0,1М 500В конденсатор
К42-У2 250В 0,33МКФ - 10% комбинированный
МБГО 250В 0,33МКФ - 20% напряжометр

Необходимо в столбец B добавить значение Вольт, в С значение мкФ, в столбец D значение %.

Те нужна формула, которая перебирает символы, пока не найдет "В" (для Вольт). Формула нашла, обрадовалась, и забрала в столбец B цифры от искомого В до пробела справа налево....
Так же с емкостью, мкф. Формула нашла букву М и стырила в свой столбец цифры слева от себя до пробела.
Не буду повторять для %

Те в итоге должно получиться -

К75-10 1,0МК 250В 10% 250 | 1,0 | 10
К75-10 0,1М 500В конденсатор 500 | 0,1 |
К42-У2 250В 0,33МКФ - 10% комбинированный 250 | 0,33 | 10
МБГО 250В 0,25МКФ - 20% напряжометр 250 | 0,25 | 20

Файлик, как предписано приклеил.

Всем заранее спасибо, будет здорово, если поможете...
К сообщению приложен файл: 5111215.xlsx (8.9 Kb)


Сообщение отредактировал PythonOleg - Вторник, 11.02.2014, 06:13
 
Ответить
СообщениеДрузья, честно ломал себе голову, но ввиду убогости межушного ганглия ничего не надумал.

Задача такова:

В столбце А имеем список товара с параметрами.

К75-10 1,0МК 250В 10%
К75-10 0,1М 500В конденсатор
К42-У2 250В 0,33МКФ - 10% комбинированный
МБГО 250В 0,33МКФ - 20% напряжометр

Необходимо в столбец B добавить значение Вольт, в С значение мкФ, в столбец D значение %.

Те нужна формула, которая перебирает символы, пока не найдет "В" (для Вольт). Формула нашла, обрадовалась, и забрала в столбец B цифры от искомого В до пробела справа налево....
Так же с емкостью, мкф. Формула нашла букву М и стырила в свой столбец цифры слева от себя до пробела.
Не буду повторять для %

Те в итоге должно получиться -

К75-10 1,0МК 250В 10% 250 | 1,0 | 10
К75-10 0,1М 500В конденсатор 500 | 0,1 |
К42-У2 250В 0,33МКФ - 10% комбинированный 250 | 0,33 | 10
МБГО 250В 0,25МКФ - 20% напряжометр 250 | 0,25 | 20

Файлик, как предписано приклеил.

Всем заранее спасибо, будет здорово, если поможете...

Автор - PythonOleg
Дата добавления - 11.02.2014 в 06:12
ikki Дата: Вторник, 11.02.2014, 06:25 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
обязательно формулой?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеобязательно формулой?

Автор - ikki
Дата добавления - 11.02.2014 в 06:25
PythonOleg Дата: Вторник, 11.02.2014, 06:29 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
можно даже заклинанием, только бы сработало
 
Ответить
Сообщениеможно даже заклинанием, только бы сработало

Автор - PythonOleg
Дата добавления - 11.02.2014 в 06:29
ikki Дата: Вторник, 11.02.2014, 06:42 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
udf + regexp
макросы должны быть включены
К сообщению приложен файл: udf_PythonOleg.xlsm (16.0 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеudf + regexp
макросы должны быть включены

Автор - ikki
Дата добавления - 11.02.2014 в 06:42
PythonOleg Дата: Вторник, 11.02.2014, 06:48 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо!
Макросы стоят, пытаюсь заставить это дело работать, но как то даже не знаю, куда жать...
 
Ответить
СообщениеСпасибо!
Макросы стоят, пытаюсь заставить это дело работать, но как то даже не знаю, куда жать...

Автор - PythonOleg
Дата добавления - 11.02.2014 в 06:48
ikki Дата: Вторник, 11.02.2014, 06:50 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
не надо ничего жать.
я же написал - udf
ваш ганглий способен погуглить эту аббревиатуру?
http://www.excel-vba.ru/chto-um....elyaudf


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Вторник, 11.02.2014, 06:51
 
Ответить
Сообщениене надо ничего жать.
я же написал - udf
ваш ганглий способен погуглить эту аббревиатуру?
http://www.excel-vba.ru/chto-um....elyaudf

Автор - ikki
Дата добавления - 11.02.2014 в 06:50
PythonOleg Дата: Вторник, 11.02.2014, 06:57 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
ikki, процентов на 30 разобрался. Но работает, и работает, как доктор прописал.

Хочу выразить Вам огромную признательность, сидел с 8ми вечера до вот семи утра, пытался решить эту проблему.

Делается сайт, для которого нужна унификация значений исходного прайса для проверки наличия товара на складе. Вы для меня эту проблему решили,
за что огромное искреннее спасибо. Теперь можно идти вперед, проблем вроде с сайтом не осталось (ттт), надеюсь, к концу месяца запущу свой проект.

И ещё раз - ОГРОМНОЕ спасибо!
 
Ответить
Сообщениеikki, процентов на 30 разобрался. Но работает, и работает, как доктор прописал.

Хочу выразить Вам огромную признательность, сидел с 8ми вечера до вот семи утра, пытался решить эту проблему.

Делается сайт, для которого нужна унификация значений исходного прайса для проверки наличия товара на складе. Вы для меня эту проблему решили,
за что огромное искреннее спасибо. Теперь можно идти вперед, проблем вроде с сайтом не осталось (ттт), надеюсь, к концу месяца запущу свой проект.

И ещё раз - ОГРОМНОЕ спасибо!

Автор - PythonOleg
Дата добавления - 11.02.2014 в 06:57
ikki Дата: Вторник, 11.02.2014, 07:02 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
интересная у вас унификация...
у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?

пс. если на большом объеме будет притормаживать - лучше переписать код в виде макроса.
будет меньше накладных расходов на создание объектов и выгрузку результата.
значительно меньше.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Вторник, 11.02.2014, 07:05
 
Ответить
Сообщениеинтересная у вас унификация...
у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?

пс. если на большом объеме будет притормаживать - лучше переписать код в виде макроса.
будет меньше накладных расходов на создание объектов и выгрузку результата.
значительно меньше.

Автор - ikki
Дата добавления - 11.02.2014 в 07:02
PythonOleg Дата: Вторник, 11.02.2014, 07:07 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
А можно (простите за назойливость) попросить объяснить, как Вы это наколдовали? Например, если я захочу взять те же значения у резисторов (Ватт и ом)

[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
[/vba]

Автор - PythonOleg
Дата добавления - 11.02.2014 в 07:07
PythonOleg Дата: Вторник, 11.02.2014, 07:10 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Цитата
у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?


ну... емкость всегда в микрофарадах. и всегда от 0,01 до 50 мкф.

напряжение - от 6,3в до нескольких тысяч...

Вот сижу, думаю, если мне придется допустим искать емкость в пикофарадах, пф, как быть =) но да ничего, разберусь... после 12 фактически часов это как воды напиться =) лед тронулся, господа присяжные заседатели! =)
 
Ответить
Сообщение
Цитата
у вас что - ёмкость всегда в микрофарадах, что вы так запросто отбрасываете обозначение единицы измерения?


ну... емкость всегда в микрофарадах. и всегда от 0,01 до 50 мкф.

напряжение - от 6,3в до нескольких тысяч...

Вот сижу, думаю, если мне придется допустим искать емкость в пикофарадах, пф, как быть =) но да ничего, разберусь... после 12 фактически часов это как воды напиться =) лед тронулся, господа присяжные заседатели! =)

Автор - PythonOleg
Дата добавления - 11.02.2014 в 07:10
ikki Дата: Вторник, 11.02.2014, 07:14 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
.Pattern = "\s(\d+[.,]\d+)Ом\s"
совершенно верно. почти.
"почти" - потому что такой шаблон будет искать числа обязательно с десятичным разделителем - точкой или запятой.
числа без разделителя он не найдёт.
но сравните этот шаблон с тем, что используется в функции "проценты" - и выберите подходящий

.ignoreCase = False игнорируем какой то случай...
нет
говорим объекту regexp о том, что нам не нужно игнорировать регистр букв
т.е. "Ом" и "ОМ" - это разные строки. первую найдёт, вторую - пропустит.
можно и игнорировать.
соответственно, True

Set m = .Execute(s & " ") Убираем значение емкости... до пробела...
нет
выполняем (execute) наш шаблон для нашей строки.
перед выполнением прицепляем к концу строки один пробел - ибо шаблон такой
(метасимвол \s означает "любой пробельный символ" (не только пробел!))
результаты выполнения записываем в объект m


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Вторник, 11.02.2014, 07:21
 
Ответить
Сообщение
.Pattern = "\s(\d+[.,]\d+)Ом\s"
совершенно верно. почти.
"почти" - потому что такой шаблон будет искать числа обязательно с десятичным разделителем - точкой или запятой.
числа без разделителя он не найдёт.
но сравните этот шаблон с тем, что используется в функции "проценты" - и выберите подходящий

.ignoreCase = False игнорируем какой то случай...
нет
говорим объекту regexp о том, что нам не нужно игнорировать регистр букв
т.е. "Ом" и "ОМ" - это разные строки. первую найдёт, вторую - пропустит.
можно и игнорировать.
соответственно, True

Set m = .Execute(s & " ") Убираем значение емкости... до пробела...
нет
выполняем (execute) наш шаблон для нашей строки.
перед выполнением прицепляем к концу строки один пробел - ибо шаблон такой
(метасимвол \s означает "любой пробельный символ" (не только пробел!))
результаты выполнения записываем в объект m

Автор - ikki
Дата добавления - 11.02.2014 в 07:14
forall Дата: Вторник, 11.02.2014, 15:24 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
PythonOleg, вот вроде..
только с неодинаковыми обозначениями и разрядностью над будет заморочиться.. мож кто додумает..
К сообщению приложен файл: 0623996.xlsx (9.1 Kb)


Сообщение отредактировал forall - Вторник, 11.02.2014, 15:26
 
Ответить
СообщениеPythonOleg, вот вроде..
только с неодинаковыми обозначениями и разрядностью над будет заморочиться.. мож кто додумает..

Автор - forall
Дата добавления - 11.02.2014 в 15:24
PythonOleg Дата: Вторник, 11.02.2014, 15:28 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
ikki, спасибо. Теперь осталось разобраться с синтаксисом поиска значений.. и теперь моя корова даст в два раза больше молока!

Весьма круто, мне бы и в голову не пришло =)
 
Ответить
Сообщениеikki, спасибо. Теперь осталось разобраться с синтаксисом поиска значений.. и теперь моя корова даст в два раза больше молока!

Весьма круто, мне бы и в голову не пришло =)

Автор - PythonOleg
Дата добавления - 11.02.2014 в 15:28
PythonOleg Дата: Вторник, 11.02.2014, 15:52 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
forall, напряжение и проценты прекрасно ищет, но вот мкф беда... =) попробую ещё покопать )
 
Ответить
Сообщениеforall, напряжение и проценты прекрасно ищет, но вот мкф беда... =) попробую ещё покопать )

Автор - PythonOleg
Дата добавления - 11.02.2014 в 15:52
ikki Дата: Вторник, 11.02.2014, 16:04 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
кусочек файла с бедой?

или вы невнимательно читали пояснения о регистре и десятичной точке? :)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Вторник, 11.02.2014, 16:05
 
Ответить
Сообщениекусочек файла с бедой?

или вы невнимательно читали пояснения о регистре и десятичной точке? :)

Автор - ikki
Дата добавления - 11.02.2014 в 16:04
forall Дата: Вторник, 11.02.2014, 20:27 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
PythonOleg, попробуйте вот так..
может белиберда получиться.. будет работать только, если обозначение "МКФ" или "МК" или "М", и только если русскими, и только если в строке перед ним не будет других "М" или "МК", и только если значение емкости состоит из 3-4 символов (запятая и точка всчет).. :)
К сообщению приложен файл: 0230406.xlsx (9.3 Kb)
 
Ответить
СообщениеPythonOleg, попробуйте вот так..
может белиберда получиться.. будет работать только, если обозначение "МКФ" или "МК" или "М", и только если русскими, и только если в строке перед ним не будет других "М" или "МК", и только если значение емкости состоит из 3-4 символов (запятая и точка всчет).. :)

Автор - forall
Дата добавления - 11.02.2014 в 20:27
  • Страница 1 из 1
  • 1
Поиск:

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