Страницы: 1
RSS
Вычисление формулы в ячейке, собранной из чисел, которые вытянуты из текста
 
Добрый день, уважаемые!

Есть необходимость вычислить формулу в ячейке, собранную из кусков текста (цифры) других ячеек.
Пример:
формула внутри ячейки "=6+5+24+84+(10+5)", результат на экране "134".
с помощью функции Ф.ТЕКСТ и ПОИСК получаю ту часть, которая в скобках - "10+5".

Как сделать без макросов так, что бы эксель посчитал эти "10+5" и я получил 15 в результате? потому, как результат "10+5" - это текст
Грубо говоря, нужна обратная функция Ф.ТЕКСТ

Спасибо!
Изменено: vikttur - 13.09.2021 20:01:16
 
Без макросов очень много нюансов. Например, всегда ли надо брать текст только из скобок? Всегда ли там сложение или может быть другой оператор? Всегда ли только два слагаемых или может быть больше?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Если правильно понял.
Итак, ваша формула
Код
=6+5+24+84+(10+5)

Затем, что-то типа этого:
Код
=RIGHT(FORMULATEXT(A1);LEN(FORMULATEXT(A1))-SEARCH("(";FORMULATEXT(A1))+1)

Суммируем.
Код
=SUM(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1;"(";);")";);"+";REPT(" ";99));{0\1}*99+1;99))


На случай, если слагаемых больше - уже формула массива:
Код
=SUM(IFERROR(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1;"(";);")";);"+";REPT(" ";99));(COLUMN($A$1:$K$1)-1)*99+1;99);))

Изменено: memo - 14.09.2021 01:08:46
 
не всегда результат в скобках это сумма, иногда это умножение
ниже пример формул с результатами, которые нужно сложить или умножить
=6+5+24+51+(11*10)(11*10)
=6+5+24+84+(11*10)(11*10)
=6+5+24+51+(15*10)(15*10)
=6+5+24+84+(15*10)(15*10)
=3+8+12+83+(17+8)(17+8)
=3+8+45+83+(10+8)(10+8)
=6+5+25+46+(2*10)+10(2*10)
 
Можно ещё с помощью EXCEL 4.0. Почитать можно ЗДЕСЬ
Хотя, наверное не подойдет, просили без макросов.
 
Цитата
Иван Лысенко написал:
не всегда результат в скобках это сумма, иногда это умножение
Ну можно так. В столбце А ваши формулы. В столбце В такая формула:
Код
=MID(FORMULATEXT(A1),SEARCH("(",FORMULATEXT(A1)),SEARCH(")",FORMULATEXT(A1))-SEARCH("(",FORMULATEXT(A1))+1)

В столбце С что-то типа такого:
Код
=IF(ISNUMBER(SEARCH("+",B1))=TRUE,SUM(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"(",),")",),"+",REPT(" ",99)),{0,1}*99+1,99)),PRODUCT(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"(",),")",),"*",REPT(" ",99)),{0,1}*99+1,99)))

Сделал за вас пример.
На случай возможной хотелки по-поводу вычитания сразу предупрежу - увы, не прокатит.
Изменено: memo - 15.09.2021 14:32:24
 
Благодарю, вычитание не требуется. Это подходит
Страницы: 1
Наверх