Range.Formula возвращает строку, которая использует ссылку на ячейку, почему? - PullRequest
0 голосов
/ 27 января 2012

У меня проблема с Range.Formula.Ниже приведен фрагмент кода (предположим, что объект Range был создан и не является нулевым)

string formula;
formula = Range.Formula;//it returns whatever is written in the formula, even the cell reference 

Допустим, у меня есть такая формула =MyCalc(41, A1), которая использует относительную ссылку на ячейку.А в ячейке A1 есть значение 100.

Таким образом, значение строковой переменной formula всегда равно =MyCalc(41, A1) вместо =MyCalc(41, 100), что является желаемым результатом.

Интересно, есть ли способ позволить Range.Formula избегать возврата ссылки на ячейку.Есть идеи?Спасибо

1 Ответ

0 голосов
/ 27 января 2012

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

Причина, по которой это не сделано для вас, состоит в том, что это может повлечь за собой много рекурсии. Что если ячейка A1 (в вашем примере) actaull ссылается на ячейку B2, которая ссылается на C100 ... и т. Д.

Я бы написал функцию, которая принимает ссылку на ячейку и получает значение VALUE (getCellValue) (не формула). Затем я напишу функцию, которая получает формулу, проверит ссылки на ячейки с помощью регулярных выражений и вызовет getCellValue для всех ссылок.

...