Формула вычисления текста (НЕТ VBA и НЕТ Evaluate)

Я использую Excel для вычисления строкового значения, где Evaluate() работает нормально, но мне не разрешено использовать valu () в менеджере имен, и мне не разрешено использовать его в VB A, потому что файл преобразуется в.xls. Здесь проблема.

У меня есть 100 с длинного примера формулы:

($F$10+0)+($F$11+0.125)+($F$10+0.0625)

который мне нужно оценить значения в скобках отдельно.
Я могу разделить формулу на

A1 is ($F$10+0)          
A2 is ($F$11+0.125)       
A3 is ($F$10+0.0625)

Я хотел бы поставить знак "=" перед этой строкой и вычислить значения A1, A2 и A3.
Однако мне не разрешено использовать функцию EVALUATE() в диспетчере файлов, она не работает в ячейках и мне не разрешено использовать VB A для кодирования формулы.
есть ли замена для оценки, которую я могу использовать?
Спасибо

1 ответ

Добро пожаловать на темную сторону Excel.

Если вы не можете использовать:

1) VBA

2) Макросы

3) Оценить ()

4) Файловый менеджер / Определить имя

Тогда нет простых формул, которые могут вам помочь (плюс вы не можете создать свою собственную). Microsoft намеренно не решала эту проблему в течение многих лет.

Таким образом, вы можете сами создавать свои собственные парсеры в ячейках Excel.

Это может быть очень сложно, если у вас есть различные типы формул, которые могут изменять знаки, или количество адресованных ячеек, или любое другое количество сумасшествия, которое могут принимать формулы.

Однако... если у вас есть минимальное количество отклонений для выражения формулы... вы можете написать что-то, что поможет.

Это сопровождается оговоркой... формула должна быть снабжена одними и теми же параметрами каждый раз. И то, что вы привели в качестве примеров, имеет структуру, определенную одинаково для каждой формулы.

Поэтому, используя ваши примеры, вы можете написать этот код в столбце A2:

=INDIRECT(MID(A1,SEARCH("$",A1),SEARCH("+",A1)-SEARCH("$",A1)),TRUE)+MID(A1,SEARCH("+",A1)+1,LEN(A1)-SEARCH("+",A1)-1)

Затем вы можете скопировать этот код в B2 и C2.

Это даст вам правильную математику, как если бы это была формула.

Структурные параметры, которые необходимы для этого, чтобы работать:

1) Адрес ячейки всегда должен начинаться со знака доллара $

2) За адресом ячейки должен немедленно следовать знак плюс +

3) В качестве формулы делается только одно добавление

4) Операнд после знака плюс должен быть числовым

5) Формула должна заканчиваться круглыми скобками)

6) Начать с круглых скобок тоже не помешает (

И так как все ваши формулы придерживаются этой структуры... формула, которую я предоставил, будет работать.

Если вам нужно изменить пункт 3, чтобы он также учитывал "вычитание", тогда вам нужно будет добавить операторы if в формулу, и это очень быстро усложнится. Невозможно? Но огромный беспорядок? Да.

В любом случае, это должно работать со всеми вашими ограничениями. Это... если ваши формулы не отклоняются от предоставленной структуры. Если у вас разные структуры формул, вам нужно сообщить нам о них... или, что еще лучше, написать свой собственный код.

Надеюсь, это помогло.:)

Другие вопросы по тегам