Строковая формула с переменными на том же листе
Я относительно новичок в формулах excel, поэтому я не знаю, как лучше всего подойти к этому или сформулировать его, чтобы найти хороший ответ через поиск.
У меня есть следующие данные:
Я хочу взять строку формулы, которая содержится в столбце E для каждой строки, заменить переменные данными, которые находятся в той же строке, и вычислить выражение. Я понятия не имею, возможно ли это вообще, но я готов попробовать макросы VB или что-то еще необходимый.
Используя вышеприведенное мышление:
B8 = сумма(4 + (8 / 2))
B9 = сумма(5 + (6 / 2))
C8 = сумма(5 + (6 / 2))
и т.д...
Если это невозможно, то моя реальная всеобъемлющая цель здесь-просто иметь единственное место для Формулы. У меня будет гораздо больше, чем 3 колонки данных, поэтому возможность обновить их в одном месте будет идеально для меня. Любая помощь ценится.
2 ответа:
Используйте определенные имена и ваши формулы, как они на самом деле написаны.
Выделите все строки с данными, начинающимися со столбца
A
Затем на вкладке Формулы в группе определенные имена выберите команду Создать из выделенногоЗатем скопируйте ваши формулы в соответствующие столбцы в строках 8 и 9
Обратите внимание, что определенные имена, созданные из выборки, добавляются на уровне рабочей книги, и это может быть проблема, если есть другие подобные листы... Это можно сделать, создав имена на уровне листа, используя вместо этого параметр Define name.
Используя
Я попытался использовать более динамическое решение, используя
Vlookup
, чтобы найти значения для сложения.Вот как я получаю данные (обратите внимание, что показанная формула старая, см. редактирование):
Первые два блока ответов (соответственно):
=SUM(VLOOKUP("Az",$A$2:$D$6,column(),FALSE)+(VLOOKUP("Cx",$A$2:$D$6,column(),FALSE)/2))
=SUM(VLOOKUP("By",$A$2:$D$6,column(),FALSE)+(VLOOKUP("Ev",$A$2:$D$6,column(),FALSE)/VLOOKUP("Dw",$A$2:$D$6,column(),FALSE)))
...и тащи сюда.
Но я понимаю, что вы ищете, в конце концов, чтобы иметь возможность, возможно, более быстро редактировать переменные формулы, поэтому мои вторые два ответа (строки 11 и 12) используйте столбцы F, G и H для поиска переменной:
=SUM(VLOOKUP($F$11,$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP($G$11,$A$2:$D$6,COLUMN(),FALSE)/2))
и=SUM(VLOOKUP($F$12,$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP($G$12,$A$2:$D$6,COLUMN(),FALSE)/VLOOKUP($H$12,$A$2:$D$6,COLUMN(),FALSE)))
Получается ли так, что вы попали туда, куда хотели? Я пытаюсь придумать способ, используя, возможно,
indirect()
ro использоватьE8
иE9
более непосредственно, так что если вы отредактируете эти формулы, другие тоже изменятся...Edit - вот "лучшее" решение, поскольку все, что вам нужно сделать, это изменить имена переменных в
E8
иE9
, и Формула обновится сама. (Если вы следуете моему макету выше), вB8
использование=SUM(VLOOKUP(MID($E$8,SEARCH("(",$E$8)+1,2),$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP(MID($E$8,SEARCH("+(",$E$8)+2,2),$A$2:$D$6,COLUMN(),FALSE)/2))
И в
Таким образом, если вы хотите суммировать, скажитеB9
,=SUM(VLOOKUP(MID($E$9,SEARCH("(",$E$9)+1,2),$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP(MID($E$9,SEARCH("+(",$E$9)+2,2),$A$2:$D$6,COLUMN(),FALSE)/VLOOKUP(MID($E$9,SEARCH("/",$E$9)+1,2),$A$2:$D$6,COLUMN(),FALSE)))
Sum(Cx+(Ev/2))
, что все, что вам нужно сделать, это отредактироватьE8
в этой формуле, и ответ1 вB8
обновится сам.