Формула вычисления текста (НЕТ 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 в формулу, и это очень быстро усложнится. Невозможно? Но огромный беспорядок? Да.
В любом случае, это должно работать со всеми вашими ограничениями. Это... если ваши формулы не отклоняются от предоставленной структуры. Если у вас разные структуры формул, вам нужно сообщить нам о них... или, что еще лучше, написать свой собственный код.
Надеюсь, это помогло.:)