powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна функция, убирающая ненужные данные из ячейки Excel
29 сообщений из 29, показаны все 2 страниц
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34093340
Гость123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, всем!
Помогите пожалуйста с кодом. В ячейке в Excel есть текст, к примеру МБП (ТЕХ),
нужна такая функция, которая оставит в этой ячейке только то, что в скобках, т.е. в данном случае должно получиться ТЕХ.
Наполнение ячеек каждый раз разное, единственное, текст в скобках будет всегда.
Очень давно работала со строковыми функциями, поэтому подзастряла. :(
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34093658
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данные - Текст по столбцам - Указать разделитель "(" и сделать второй раз так, но для разделитея ")".
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34093734
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставьте в книгу модуль и туда эту функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function InBrackets(strValue$) As String
    On Error Resume Next
    Dim intPos1%, intPos2%, strResult$
    intPos1 = InStr( 1 , strValue, "(")
    intPos2 = InStr( 1 , strValue, ")")
    InBrackets = Mid(strValue, intPos1 +  1 , intPos2 - intPos1 -  1 )
End Function
Хотя наверно можно и строковыми функциями самого Excel'а, но я не знаю аналога Mid в Excel, поэтому и VBA
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34093776
Гость123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orunbek
Вы меня спасли, просто супер, то что и нужно было. :))
Спасибо огромное.

Ivan33
Даже не задумалась о таком варианте... ;)) Правда, мне больше подходит вариант orunbek -а. Но все равно, спасибо.
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34094725
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще такая вещь как Regular Expressions - мощная, но сложная для изучения:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/2380d458-3366-402b-996c-9363906a7353.asp

Например, пишем след. функцию в стандартном модуле:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function ClearName(ByVal strText As String, ByVal strPattern As String) As String
    Dim RegExp As Object
    Set RegExp = CreateObject("vbscript.regexp")
    With RegExp
        .Pattern = strPattern
        .Global = True
        ClearName = .Replace(Trim(strText), "")
    End With
End Function

И используем так:

1. на листе (где [A1] содержит "МБП (ТЕХ)")

=ClearName(A1, "(.{1,}\()|(\))" )

2. в коде

Код: plaintext
x = ClearName(Range("A1"), "(.{1,}\()|(\))")

Получается универсальная функция на все случаи жизни... остается только научиться писать "паттерны".

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095002
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)

1. на листе (где [A1] содержит "МБП (ТЕХ)")

=ClearName(A1, "(.{1,}\()|(\))" )

2. в коде

Код: plaintext
x = ClearName(Range("A1"), "(.{1,}\()|(\))")

Получается универсальная функция на все случаи жизни... остается только научиться писать "паттерны".

KL
[MVP - Microsoft Excel]
Можешь пояснить почему маска "(.{1,}\()|(\))"
для данного случая я бы написал так ".+\(.+\)"
.+ - любое количество любого символа
\( - символ "("
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095200
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorМожешь пояснить почему маска "(.{1,}\()|(\))"
для данного случая я бы написал так ".+\(.+\)"
.+ - любое количество любого символа
\( - символ "("1. я не специаллист в Regular Expressions
2. твоя маска уничтожит весь стринг, т.к. условие выполняется для всего стринга
3. моя маска была сделана наспех путем переделки уже существовавшей и она явно не оптимальна
4. моя маска состоит из двух альтернативных масок (.{1,}\() и (\)) разделенных символом | соответствующим "или"
5. если не ошибаюсь, предложенный тобой .+ точно эквивалентен .{1,} , но покороче и означает не любое количество любого символа, а от одного любого символа и более
6. при ближайшем рассмотрении я склоняюсь к др. версии маски "(.{0,}\()|(\).{0,})"

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095247
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)6. при ближайшем рассмотрении я склоняюсь к др. версии маски "(.{0,}\()|(\).{0,})"

Ну или следуя твоей логике (упрощения): "(.*()|(\).*)"

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095263
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущее сообщение получилось внутри цитаты:

Ну или следуя твоей логике (упрощения): "(.*()|(\).*)"

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095452
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)1. я не специаллист в Regular ExpressionsЭто заметно :)
KL (XL)6. при ближайшем рассмотрении я склоняюсь к др. версии маски "(.{0,}\()|(\).{0,})" Тоже не верно.


Во первых, надо переписать макрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function ClearName(ByVal strText As Range, ByVal strPattern As String, ByVal intSection As Integer) As String
    Dim RegExp As Object
    Set RegExp = CreateObject("vbscript.regexp")
    With RegExp
        .Pattern = strPattern
        .Global = True
        ClearName = .Replace(strText, "$" & intSection)
    End With
End Function
А во вторых, запускать так:
Код: plaintext
=ClearName(A1, "(.+)\((.+)\)",  2 )
Это если с минимальными переделками исходного макроса. А если делать его универсальным, то делать надо так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function RegExpReplace(ByVal rCell As Range, ByVal rPattern As String, ByVal rReplaceWith As String) As String
    Dim RegExp As Object
    Set RegExp = CreateObject("vbscript.regexp")
    With RegExp
        .Pattern = rPattern
        .Global = True
        RegExpReplace = .Replace(rCell, rReplaceWith)
    End With
End Function
Ну и для взятия первого текста в скобках запускать соответственно:
Код: plaintext
=RegExpReplace(A1, "^(.+)\((.+)\)", "$2")
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095530
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВо первых, надо переписать макрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function ClearName(ByVal strText As Range, ByVal strPattern As String, ByVal intSection As Integer) As String
    Dim RegExp As Object
    Set RegExp = CreateObject("vbscript.regexp")
    With RegExp
        .Pattern = strPattern
        .Global = True
        ClearName = .Replace(strText, "$" & intSection)
    End With
End Function
Надо - слово красивое, а чем вызвано это "надо"? Есть сбои в работе функции? Неэффективное расходование ресурсов? Что?

White OwlА во вторых, запускать так:
Код: plaintext
=ClearName(A1, "(.+)\((.+)\)",  2 )
И опять-таки, чем конкретно не угодил подход с "(.*()|(\).*)" ?

White OwlЭто если с минимальными переделками исходного макроса. А если делать его универсальным, то делать надо так:Имелась ввиду универсальность очистки а не замены. Но, конечно, чем универсальней, тем лучше :-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095573
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Надо - слово красивое, а чем вызвано это "надо"? Есть сбои в работе функции?Ага :)
Запусти свою функцию на такие тексты:
AAA (BBB)
AAA (BBB
AAA BBB)
AA(A (BBB)
И посмотри в каких случаях она вернет BBB а когда она вернет что-то иное.

KL (XL)И опять-таки, чем конкретно не угодил подход с "(.*()|(\).*)" ?Этот паттерн вообще не расшифровывается в что-то осмысленное :)
А если имелся в виду "(.*\()|(\).*)", то это расшифровывается в поиск строки завершающейся символом ( или поиск строки завершающеейся симовлом ) . Причем жадный поиск.
В любом случае, к задаче поиска текста в скобках этот паттерн тоже не имеет отношения.
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095649
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЗапусти свою функцию на такие тексты:
AAA (BBB)
AAA (BBB
AAA BBB)
AA(A (BBB)
И посмотри в каких случаях она вернет BBB а когда она вернет что-то иное.Ну ты уж тогда, на всякий пожарный, запусти свое решение с этими и с этим:
(ТЕХ)
если перед скобкой ничего нет, то твоя маска проигнорирует скобки. Так что в этом случае мне больше нравится: "(.*)\((.*)\)"

White OwlЭтот паттерн вообще не расшифровывается в что-то осмысленное :)
А если имелся в виду "(.*\()|(\).*)", то это расшифровывается в поиск строки завершающейся символом ( или поиск строки завершающеейся симовлом ) . Причем жадный поиск.
В любом случае, к задаче поиска текста в скобках этот паттерн тоже не имеет отношения.Мне почему-то начинает казаться, что ты мне друг по несчастью (в смысле не специалист по Regular Expressions) ;-)

здесь http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/2380d458-3366-402b-996c-9363906a7353.asp написано:

* Matches the preceding character or subexpression zero or more times. For example, zo* matches "z" and "zoo". * is equivalent to {0,}.

И что самое смешное, работает прекрасно. А жадный поиск так по-моему здесь как раз к месту.

И еще к разговору об универсальности...

1. Похоже, твой код позволяет выбирать одну маску за раз, а в моем проще работать с альтернативными масками. Но я наверняка просто не нашел как это делать в твоем решении.

2. Если третий параметр (intSection) ошибочный, то твой код возвращает нонсенс, а не ошибку.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095765
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlAAA (BBB
AAA BBB)

Пожалуй, если рассматривать задачу, как оставить то, что внутри скобок (как у автора), то тут твой подход лучше. Я как-то зафиксировался на удалении всего, что за скобками, поэтому при эксперименте с примерами я видел все как в верхней части прилагаемой картинки :-) Остальные пункты пока в силе.
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095831
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)(ТЕХ)
если перед скобкой ничего нет, то твоя маска проигнорирует скобки.Она не проигнорирует, она просто не найдет искомого. Впрочем, если исправить мой паттерн на ^(.*)\((.+)\) то оно и с (ТЕХ) справится правильно :)

KL (XL) Так что в этом случае мне больше нравится: "(.*)\((.*)\)" В скобках должно что-то быть! А ты разрешаешь ничему не быть... Впрочем это уже вопрос постановки задачи :)

KL (XL)Мне почему-то начинает казаться, что ты мне друг по несчастью (в смысле не специалист по Regular Expressions) ;-)ээээ... вообще-то, я не на использование звездочки указывал, а на не уместное использование | . Паттерн (.*\()|(\).*) при Replace на пустую строку убьет все до первой открывающей скобки и все после первой закрывающей. Он не будет проверять на парность скобок.


KL (XL)2. Если третий параметр (intSection) ошибочный, то твой код возвращает нонсенс, а не ошибку.Ну вообще-то, для задач типа "вычленить кусок текста" я предпочитаю работать с коллекцией SubMatches. Replace не использую почти никогда, так что навскидку сочиняя для него паттерн могу и наврать :)
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095869
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВпрочем, если исправить мой паттерн на ^(.*)\((.+)\) то оно и с (ТЕХ) справится правильно :)Это я уже заметил

White OwlВ скобках должно что-то быть! А ты разрешаешь ничему не быть... Впрочем это уже вопрос постановки задачи :)Пожалуй.

White Owlээээ... вообще-то, я не на использование звездочки указывал, а на не уместное использование | . Паттерн (.*\()|(\).*) при Replace на пустую строку убьет все до первой открывающей скобки и все после первой закрывающей. Он не будет проверять на парность скобок.Аааа! Тады ой. Но все-таки, согласись, что это "расшифровывается во что-то осмысленное", а имено в другое видение задачи :-)

White OwlНу вообще-то, для задач типа "вычленить кусок текста" я предпочитаю работать с коллекцией SubMatches. Replace не использую почти никогда, так что навскидку сочиняя для него паттерн могу и наврать :)Поскольку я чаще использую Excel, то с текстом работать приходится редко. Т.ч. RegExp редко бывает нужен, а Replace это единственное, что я использую.
В любом случае спасибо, что заставил поглубже копнуть - сам бы наверняка не собрался.

Кстати, как поживает твоя конкурсная работа? По-моему мы deadline забыли установить. Я тут играю с Solver и такое ощущение, что уже близок к относительно быстрому решению - 14 отрезков за 50 секунд. Правда еще не установил последний constraint

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095894
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Аааа! Тады ой. Но все-таки, согласись, что это "расшифровывается во что-то осмысленное", а имено в другое видение задачи :-) Это не другое видение задачи, это уже совершенно другая задача.

KL (XL)Кстати, как поживает твоя конкурсная работа? По-моему мы deadline забыли установить. Я тут играю с Solver и такое ощущение, что уже близок к относительно быстрому решению - 14 отрезков за 50 секунд. Правда еще не установил последний constraint Да никак, забыл я про нее :( Щас вернемся :)
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34095906
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl KL (XL)Кстати, как поживает твоя конкурсная работа?...Да никак, забыл я про нее :( Щас вернемся :)От-жежь, некоторые заманють да бросють!!! Да расслабься. Посколько особого энтузязизьма идея не вызвала, то и спешить некуда. Если чего сделаешь - повесь - я добавлю твой код в свою коллекцию примеров и буду увековечивать белую сову на всех форумах :-)))) Ну и соответственно, если я чего накумекаю, тоже подвешу.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34096404
Гость123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так же нечестно! :)
KL (XL) , White Owl - вы же меня заинтересовали!!!
Теперь еще нужно с этим разобраться ;). Попробую доползти до кода (особенно до масок!) на выходных.
Спасибо огромное за примеры - буду смотреть.

З.Ы. Конкретно в моей постановке задачи - скобки будут всегда, причем парные.
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34097508
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость123Ну так же нечестно! :)
KL (XL) , White Owl - вы же меня заинтересовали!!!
Теперь еще нужно с этим разобраться ;). Попробую доползти до кода (особенно до масок!) на выходных.
Спасибо огромное за примеры - буду смотреть.

З.Ы. Конкретно в моей постановке задачи - скобки будут всегда, причем парные.это до кучи
Есть ли в формулах Excel регулярные выражения?




White OwlВпрочем, если исправить мой паттерн на ^(.*)\\((.+)\\) то оно и с (ТЕХ) справится правильно :)


Правильно ли я понимаю?
^(.*) - ни одного или более символа



KL (XL) - так я и не понял что означают фигурные скобки
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34097672
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorПравильно ли я понимаю?
^(.*) - ни одного или более символа MSDN ^
Matches the position at the beginning of an input string except when used in a bracket expression where it negates the character set. To match the ^ character itself, use \^.В этом случае ^ должен означать положение в начале текста (а не отрицание как внутри квадратных скобок)

vkodorKL (XL) - так я и не понял что означают фигурные скобки MSDN { }
Marks the beginning of a quantifier expression. To match these characters, use \{ and \}.

{n}
n is a nonnegative integer. Matches exactly n times. For example, 'o{2}' does not match the 'o' in "Bob," but matches the two o's in "food".

{n,}
n is a nonnegative integer. Matches at least n times. For example, 'o{2,}' does not match the "o" in "Bob" and matches all the o's in "foooood". ' o{1,}' is equivalent to 'o+'. 'o{0,}' is equivalent to 'o*' .

{n,m}
m and n are nonnegative integers, where n <= m. Matches at least n and at most m times. For example, "o{1,3}" matches the first three o's in "fooooood". 'o{0,1}' is equivalent to 'o?'. Note that you cannot put a space between the comma and the numbers.{ } содержат число или луч указывающий на кол-во повторов предшествующего символа.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34097759
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)
Понял. Спасибо.
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34112856
Гость123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге я остановилась на таком варианте:
Код: plaintext
=RegExpReplace(A1; "^(.*?)\((.+)\)"; "$2")

Всем большое спасибо за помощь!

З.Ы. Регулярные выражения - это нечто - чуть голову себе не поломала. ;))))
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34113229
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощенья за назойлдивость
"^(.*?)\((.+)\)"
^(.*?) = от начала строки до "(", любое количество любых символов
\( - далее скобка
(.+) - далее любое количество любых символов
\) - далее скобка
Я правильно понял?
И еще ни как не могу панять смысл аргумента rReplaceWith As String
.Replace(rCell, rReplaceWith) - в справке говорится
Function Replace(sourceString As String, replaceVar) _
As String

Метод Replace даёт возможность заменить все совпадения регулярного выражения строкой replaceVar.

т.е. вы все найденое заменяете на "$2" ?
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34113781
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorПрошу прощенья за назойлдивость
"^(.*?)\((.+)\)"
^(.*?) = от начала строки до "(", любое количество любых символов
\( - далее скобка
(.+) - далее любое количество любых символов
\) - далее скобкаНе совсем так.
^(.*?)\( = взять группу из нуля или больше любых символов от начала строки завершающейся символом "открывающая скобка" причем последний символ из первой группы не является символом "открывающая скобка"
(.+)\) = взять вторую группу в которой один или больше любых символов после которой идет символ "закрывающая скобка". Причем после символа "закрывающая скобка" должен быть любой другой (либо конец строки). А конец группы может содержать любое количество закрывающих скобок.

vkodorт.е. вы все найденое заменяете на "$2" ?В общем да, только учти что Replace в данном случае делает замену НАЙДЕНОЙ подстроки.
То есть, если в строке источнике нету вообще пары открывающая-закрывающая скобка с хотя бы одним символом между ними, то Replace соответсвенно вообще не сделает никаких замен.
Ну то что $2 означает вторую группу ты понял? :)


2 Гость123:
Мне почему-то кажется, что жадность надо ставить в первой группе, а вторую наоборот не жадной делать. И конец строки тоже будет нелишним указать. В общем предлагаю переписать вот так:
^(.*)\((.+?)\)$
Ну конечно, это зависит от задачи.
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34113931
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, сам ошибся... Редко я с регэкспами работаю, забывать уже стал.

^(.*?)\( = группа ноль и больше символов до первого символа ( в строке, не включая (
(.+)\) = группа длинной не менее одного символа вплоть до последнего ) , не включая этот последний cимвол, но включая все ) встретившиеся после первого ( .
То есть, =RegExpReplace(A1; "^(.*?)\((.+)\)"; "$2") на строку AAA(B(CCC)D)E вернет B(CCC)DE
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34113953
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, если нужно вернуть содержание первых парных скобок, то лучше макрос написать вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function GetFirstSubMatch(ByVal rCell As Range, ByVal rPattern As String) As String
    Dim RegExp As Object, Matches As Object
    Set RegExp = CreateObject("vbscript.regexp")
    With RegExp
        .Pattern = rPattern
        .Global = True
        Set Matches = .Execute(rCell)
        On Error GoTo NoMatch
        GetFirstSubMatch = Matches( 0 ).SubMatches( 0 )
        Exit Function
NoMatch:
        GetFirstSubMatch = ""
    End With
End Function
И запускать:
Код: plaintext
=GetFirstSubMatch(A1, "\(([^\(\)]+?)\)")
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34114517
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlИ запускать:
Код: plaintext
=GetFirstSubMatch(A1, "\(([^\(\)]+?)\)")

Спасибо
сдесь вроде понятно
([^\(\)]+?) - исключаешь любое количество \(\)
...
Рейтинг: 0 / 0
Нужна функция, убирающая ненужные данные из ячейки Excel
    #34114556
Гость123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlА вообще, если нужно вернуть содержание первых парных скобок
Немного другая формулировка - нужно содержимое крайних скобок. ;)
Еще немного пришлось преобразовать. :)
Код: plaintext
=RegExpReplace(A1; "^(.*?)\((.+)\).*"; "$2")
Т.е. на строку AAA(B(CCC)D)E функция вернет B(CCC)D

White Owl - еще раз спасибо за помощь!
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна функция, убирающая ненужные данные из ячейки Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]