Здравствуйте! Прошу подсказать как можно исправить ошибку или может есть более простой способ решить задачу. Сразу оговорюсь, что вычислял количество символов между скобок на случай, если значение будет из двух цифр или больше.
из текста 1 '3' без ошибок выдаёт значение между одинарных скобок =3, а вот со скобками почему-то работать не хочет.
Здравствуйте! Прошу подсказать как можно исправить ошибку или может есть более простой способ решить задачу. Сразу оговорюсь, что вычислял количество символов между скобок на случай, если значение будет из двух цифр или больше.
(сознательно не использую теги для своей формулы, чтобы красные скобки хорошо просматривались).
Т.е. в вашей формуле 4 символа-ограничителя, участвующих в 4-х функциях FIND, должны идти в такой последовательности: 1 - открывающий, 2 - ЗАКРЫВАЮЩИЙ, 3 - открывающий, 4- открывающий (а у вас сейчас - откр, откр, откр, ЗАКР). Проверьте дополнительно на квадратных или фигурных скобках: [ ], { }
А вариант с апострофами у вас работает потому, что апострофы одинаковые - и открывающий, и закрывающий.
Можно воспользоваться такой, более компактной, формулой (хотя для осмысленного использования придётся почитать про регулярные выражения, если ранее не сталкивались с ними): [vba]
Код
=REGEXEXTRACT(B3;"\(([^()]*)\)")
[/vba] Это формула для круглых скобок ( ) в качестве ограничителей текста. Если ограничитель - фигурные скобки, то формула будет выглядеть вот так: [vba]
Код
=REGEXEXTRACT(B3;"{([^{}]*)}")
[/vba] Обратите внимание, что фигурные скобки уже не нужно экранировать обратными слэшами, как это было в случае скобок круглых: \( и \) .
Для апострофа же в качестве разделителя формула упрощается еще больше: [vba]
Код
=REGEXEXTRACT(B3;"'([^']*)'")
[/vba]
Если в проверяемой строке открывающих и закрывающих символов - ровно по одному, можно воспользоваться такой формулой (для круглых скобок): [vba]
(сознательно не использую теги для своей формулы, чтобы красные скобки хорошо просматривались).
Т.е. в вашей формуле 4 символа-ограничителя, участвующих в 4-х функциях FIND, должны идти в такой последовательности: 1 - открывающий, 2 - ЗАКРЫВАЮЩИЙ, 3 - открывающий, 4- открывающий (а у вас сейчас - откр, откр, откр, ЗАКР). Проверьте дополнительно на квадратных или фигурных скобках: [ ], { }
А вариант с апострофами у вас работает потому, что апострофы одинаковые - и открывающий, и закрывающий.
Можно воспользоваться такой, более компактной, формулой (хотя для осмысленного использования придётся почитать про регулярные выражения, если ранее не сталкивались с ними): [vba]
Код
=REGEXEXTRACT(B3;"\(([^()]*)\)")
[/vba] Это формула для круглых скобок ( ) в качестве ограничителей текста. Если ограничитель - фигурные скобки, то формула будет выглядеть вот так: [vba]
Код
=REGEXEXTRACT(B3;"{([^{}]*)}")
[/vba] Обратите внимание, что фигурные скобки уже не нужно экранировать обратными слэшами, как это было в случае скобок круглых: \( и \) .
Для апострофа же в качестве разделителя формула упрощается еще больше: [vba]
Код
=REGEXEXTRACT(B3;"'([^']*)'")
[/vba]
Если в проверяемой строке открывающих и закрывающих символов - ровно по одному, можно воспользоваться такой формулой (для круглых скобок): [vba]