Надо убрать цену - VBA
Формулировка задачи:
Из базы выгружаються одни названия с ценами в скобках, другие сначала с уточнением названия в скобках, а потом с ценами в скобках, а третие названия с уточнением названия в скобках,а четвертые - просто названия. Например яблоки (8,75); яблоки (укр) (5,50); яблоки (груз);яблоки . И таких около 1000 позиций. Нужно пробежаться по всему столбцу и с каждой позиции где есть цена, убрать эту цену, а все остальное оставить. Например: яблоки; яблоки (укр); яблоки (груз), яблоки.
Пример в приложении.
Может кто-нибудь знает формулу и/или макрос.
Всем огромное спасиба, кто поможет!!
Решение задачи: «Надо убрать цену»
textual
Листинг программы
Dim objRegExp As Object 'объявляем на уровне модуля, чтобы ускорить работу(исключить повторные создания объектов при вызове функции) '--------------------------------------------------------------------------------------- ' Procedure : NoCost2 ' DateTime : 14.08.2013 12:08 ' Author : The_Prist(Щербаков Дмитрий) ' WebMoney - R298726502453; Яндекс.Деньги - 41001332272872 ' [url]http://www.excel-vba.ru[/url] ' Purpose : Функция удаляет текст в скобках, начинающийся на цифры, за которыми буквы ' (23,45грн),(23,45руб),(23,45р),(23,45 грн) ' Принцип замены основан на шаблоне регулярных выражений - Regular Expressions ' Аргументы: ' sTxt - ссылка на ячейку с текстом или текст для обработки '--------------------------------------------------------------------------------------- Function NoCost2(sTxt As String) As String If objRegExp Is Nothing Then 'если объект Regular Expressions еще не создан - создаем Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.ignorecase = True 'игнорируем регистр objRegExp.MultiLine = True 'просмотр всех строк objRegExp.Global = True 'ищем все вхождения. Хотя в данном случае не обязательно. 'Шаблон для замены objRegExp.Pattern = "\(\d{1,}(,|\.)?\d*\D*\)" 'd{1,} - одна и более цифр '(,|\.)? - точка или запятая, являющиеся разделителем целой и дробной части. Может отсутствовать '\d* - одна или более цифр или ни одной '\D* - один или более символов, либо ни одного 'получаем шаблон: '(цифра|запятая или точка|цифра|любой символ или несколько) 'или проще '(число|любой символ или несколько) 'В случае использования шаблона objRegExp.Pattern = "\(\d{1,}(,|\.)?\d*""грн""\)" '(число|"грн") End If 'заменяем текст, соответствующий построенному шаблону NoCost2 = objRegExp.Replace(sTxt, "") End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д