Надо убрать цену - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы