Страницы: 1
RSS
Перегон формулы в макрос (удаление лишних символов)
 
Добрый день!

просьба помочь с конвертацией формулы в макрос. так что бы ее можно было вписать в цикл для определенной ячейки
формуле следующая :
Скрытый текст

это аДское месиво должно делать следующее :

если у сцепки в конце строки есть 2 одинаковых набора знаков которые повторяются 2 раза ( отделенные запятой) то 1ин из них удаляется. ( как пример: ",млрд.руб, млрд.руб"

после этого она удаляет из ячейки все левые символы которые могу встретиться в тексте ( которые актуальны для меня), все кроме кавычек ибо в формуле их не задать, по этому я воткнул кавычки в ячейку и работал от этого

О великие мастера! просьба помочь, ибо мне страааааашно!)

Заранее спасибо!

Изменено: Exzem - 22.02.2017 23:17:29
 
Покажите в небольшом файле несколько строк с исходными данными и желаемый результат.
 
направляю файлик с формулой
 
Функция. Второй параметр - это строка с набором символов который нужно заменить. например */.() ""   дваойные ковычки вводятся дважды. то есть в ячейе "*/.() """
Код
Function SpecTrim(ByVal SourceString As String, ByVal CharsSet As String) As String
    Arr = Split(SourceString, ",")
    If Arr(UBound(Arr)) = Arr(UBound(Arr) - 1) Then Arr(UBound(Arr)) = ""
    Result = Join(Arr)
    For i = 1 To Len(CharsSet)
        Result = Replace(Result, Mid(CharsSet, i, 1), "")
    Next i
    SpecTrim = Result
End Function
Изменено: БМВ - 22.02.2017 23:34:52
По вопросам из тем форума, личку не читаю.
 
Мммммм
спасибо за информацию, но я хотел организовать работу макроса вместе с этой формулой, что бы в массив вносились данные без ненужных знаков, а потом сравнивались с таким же набором символов, без левых знаков.
 
То есть вы хотите чтоб просто тот монстрик просто как формула вписывалась в ячейку?  Вопрос - зачем?
Что вы подразумеваете под левыми, ненужными знаками?... В какой массив?

То что выше- это функция которая заменяет ту формулу, что вы привели. Использовать её как функцию листа или внутри  скрипта - без разницы. Единственное. что в ней независимо от набора "ненужных" символов , удалится запятая, но это просто изменить.
По вопросам из тем форума, личку не читаю.
 
Цитата
Exzem написал:
Перегон формулы в макрос
Цитата
Exzem написал:
я хотел организовать работу макроса вместе с этой формулой
Вы противоречите сами себе )
 
Касательно функции я понял, но у формулы есть еще 1о предназначение, удаление повторяющейся единицы измерения ( через запятую если идут подряд)
я как раз и просил подобрать макрос ко ВСЕЙ формуле.... =)
то есть макрос берез значение из ячейки, потом ищет повторяющиеся ед. измерение и удаляет его если есть, а потом удаляет лишнее из получившегося ( это через вашу функцию)
 
Оговорился малость)
Макрос должен выполнять то же самое действие, что и формула)
 
Так а что не так делает функция?
Это реализовано.
Цитата
Exzem написал:
если у сцепки в конце строки есть 2 одинаковых набора знаков которые повторяются 2 раза ( отделенные запятой) то 1ин из них удаляется. ( как пример: ",млрд.руб, млрд.руб"
Набор ненужных знаков вы сами контролируете.
Просто даже интересно. примеры , те что были - полностью идентичны, сейчас специально сравнил, разве что ";" добавил.
По вопросам из тем форума, личку не читаю.
 
Вы были правы, сейчас разобрался с функцией полностью, до этого мог только смотреть на нее =)
но нашёл 1ин косяк, Ед. измерения может быть не всегда, и если ее нету, то выдает ошибку, можно это как то поправить?
 
Пример в студию. Не вопроизводится.
это "ыфафыва,фывы.фывфыв*йцвыв(фывфыв)в" становится  этим "ыфафывафывыфывфывйцвывфывфывв" без ошибок, при вот такой
Код
=SpecTrim(A3;";*/.() """)
 
Изменено: БМВ - 23.02.2017 09:53:22
По вопросам из тем форума, личку не читаю.
 
как то так
 
Замените
Код
Function SpecTrim(ByVal SourceString As String, ByVal CharsSet As String) As String
    arr = Split(SourceString, ",")
    If UBound(arr) > 0 Then
        If arr(UBound(arr)) = arr(UBound(arr) - 1) Then arr(UBound(arr)) = ""
        Result = Join(arr)
    Else
        Result = arr(0)
    End If
    For i = 1 To Len(CharsSet)
        Result = Replace(Result, Mid(CharsSet, i, 1), "")
    Next i
    SpecTrim = Result
End Function
По вопросам из тем форума, личку не читаю.
 
Спасибо!!
 
а не могли бы вы объяснить как использовать данную функцию непосредственно в макросе, не используя ее в ячейке ( соответственно самому задать не нужные знаки)
 
До субботы с телефона и отвечать неудобно. Сделайте новую тему, там вам ответят.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх