Всем доброго времени суток, может кто нибудь подсказать, в каких случаях Excel сам изменяет формулу, а именно добавляет символ собаки? Например была формула "=premiaProp_out", а после какой то операции она приняла вид "=@premiaProp_out", версия - MS Excel для Office 365. premiaProp_out - это обычная именованная ячейка. Дело в том, что после работы с документом по средствам самого MS Excel файл так же используется библиотеками (POI, Aspose) и из-за добавления данного символа библиотеки перестают понимать формулу. В совокупности с тем, что не понятно как это отслеживать, это создает большие проблемы. Есть ли возможность запретить Excel делать такие преобразования? Заранее благодарю за помощь.
Почему Excel самостоятельно приписывает символ "@" в некоторых формулах?
05.02.2020 06:53:45
|
|
|
|
05.02.2020 08:19:10
Доброе время суток
|
|||
|
|
05.02.2020 08:22:59
Пример может помочь не всем. Знак собаки в новых версиях обозначает обращение в формуле внутри строки/столбца, а не к диапазону в целом(примерно тоже самое мы можем наблюдать в ранних версиях при работе в умных таблицах - [@Столбец1]). Это нововведение в версиях 365 пока, в связи с появлением новых формул массива(без Ctrl+Shift+Enter). И так Excel понимает, что не надо формулу "растягивать" массивом на весь диапазон. Думаю, что вряд ли это получится вменяемо обойти. Хотя из того же VBA считывание формулы(activecell.Formula) этот знак игнорирует, ровно так же как и ведущий апостроф или фигурные скобки.
Изменено:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
|
|
|
|
05.02.2020 09:03:41
Спасибо за ответы!) В своем частном случаи получилось отловить закономерность, собака добавляется, если формула вставляется кодом VBA и при этом в книге ещё нет такого имени, например, если выполнить ActiveCell.Formula="=name_out" то перед name_out добавится собака, если же руками ввести формулу, то собака не добавится, так же как если имя в книге уже имеется.
Получается, всё же Excel не сам меняет эту формулу, а заводит её в таком виде, когда имя отсутствует. Т.к. за счет макросов часть файла заполняется автоматически при отслеживании определенных событий, выглядело это будто бы в какой то момент Excel самостоятельно меняет формулу, фактически же формула принимает такой вид после заведения её средствами VBA при описанных выше условиях. Прошу прощения, что немного ввел в заблуждения, не предоставив полноты картины.
Изменено: |
||||
|
|
|||