Excel: как объявить переменные в одной ячейке и определить их в другой? - PullRequest
0 голосов
/ 30 марта 2011

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

ПРИМЕР: Формулав ячейке A1:
(= x + y).
Результат в ячейке A2:
Результат формулы A1 должен быть показан в A2.
Определения двух переменных формулы A1,f.ex.«X = 5» и «Y = 3» также должны быть помещены в A2.
RESULT:
A2: "= Результат A1, обеспечивающий x = 3 и y = 5"

На экране это будет выглядеть примерно так:
(A1 = ?????) и
(A2 = 8)

1 Ответ

2 голосов
/ 30 марта 2011

Вы можете определить формулу для одной ячейки (A2), написав ее в виде текста в другой ячейке (A1 ), используя VBA. Основная идея такова:

Range("A2").Formula = "=" & Range("A1").Value

Имейте в виду, что перед формулой в A1 не следует писать «=», иначе формула будет оценена там. Хитрость в том, что при этом формула будет обрабатываться как обычный текст. Поэтому при назначении его из текста в A1 необходимо указать «=» перед формулой.

[EDIT1] Я неправильно понял ваш вопрос. Вот еще одна попытка:

Чтобы иметь возможность использовать «переменные», которые вы предоставляете в той же ячейке в качестве результата, вам необходимо:

  • Извлечение «переменных» из текста в A2 (например, RegEx)
  • Заменить имена переменных в A1 на значения переменных, найденных в A2, и сохранить их во временной строковой переменной (формула_строки)
  • Оцените формулу и установите значение / текст A2 в соответствии с вашим шаблоном

    Диапазон ("A2"). Значение = "Результат:" & Оценка (формула_строки) & "с использованием & Диапазон (" A2 "). Значение

У меня нет превосходства здесь, чтобы попробовать это, но я думаю, вы понимаете, о чем я.

[EDIT2] Еще одна попытка, согласно вашему комментарию:

Вы можете сэкономить много хлопот, если будете использовать следующий подход:

Допустим, у вас есть годы по вертикали (сверху вниз) и месяцы по горизонтали (слева направо)

  • Напишите год "цифры" слева от матрицы
  • Напишите «цифры» месяца над матрицей
  • Теперь вы можете написать формулу в одной ячейке и просто "перетащить" ее в другие ячейки, вам просто нужно «зафиксировать» строку для месяца и столбец для года (это можно сделать, написав знак $ перед знаком, который вы хотите зафиксировать

Надеюсь, это то, что вы хотели.

...