Страницы: 1
RSS
Почему Excel самостоятельно приписывает символ "@" в некоторых формулах?
 
Всем доброго времени суток, может кто нибудь подсказать, в каких случаях Excel сам изменяет формулу, а именно добавляет символ собаки? Например была формула "=premiaProp_out", а после какой то операции она приняла вид "=@premiaProp_out", версия - MS Excel для Office 365. premiaProp_out - это обычная именованная ячейка. Дело в том, что после работы с документом по средствам самого MS Excel файл так же используется библиотеками (POI, Aspose) и из-за добавления данного символа библиотеки перестают понимать формулу. В совокупности с тем, что не понятно как это отслеживать, это создает большие проблемы. Есть ли возможность запретить Excel делать такие преобразования? Заранее благодарю за помощь.  
 
сначала на Земле были мамонты, потом появились компьютеры, потом Excel....
понимаете, рассказ получится длинным и обо всем и даже если где-то в средине текста, на 20-30 странице будет ответ на ваш вопрос, вы можете его и не заметить
другое дело - наличие файла-примера, спрашиваете "почему в ячейке Х" написано так и в следующем сообщении получаете ответ почему
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вот пример, формула на листе "Print", именованная ячейка на листе "Params". Вопрос заключается именно в том, в какой момент, при каком событии, Excel самостоятельно меняет формулу, как это отслеживать?..
 
Доброе время суток
Цитата
lucky7 написал:
в каких случаях Excel сам изменяет формулу, а именно добавляет символ собаки?
Оператор неявного пересечения: @
 
Пример может помочь не всем. Знак собаки в новых версиях обозначает обращение в формуле внутри строки/столбца, а не к диапазону в целом(примерно тоже самое мы можем наблюдать в ранних версиях при работе в умных таблицах - [@Столбец1]). Это нововведение в версиях 365 пока, в связи с появлением новых формул массива(без Ctrl+Shift+Enter). И так Excel понимает, что не надо формулу "растягивать" массивом на весь диапазон. Думаю, что вряд ли это получится вменяемо обойти. Хотя из того же VBA считывание формулы(activecell.Formula) этот знак игнорирует, ровно так же как и ведущий апостроф или фигурные скобки.
Изменено: Дмитрий(The_Prist) Щербаков - 05.02.2020 08:24:31
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за ответы!) В своем частном случаи получилось отловить закономерность, собака добавляется, если формула вставляется кодом VBA и при этом в книге ещё нет такого имени, например, если выполнить ActiveCell.Formula="=name_out" то перед name_out добавится собака, если же руками ввести формулу, то собака не добавится, так же как если имя в книге уже имеется.

Получается, всё же Excel не сам меняет эту формулу, а заводит её в таком виде, когда имя отсутствует. Т.к. за счет макросов часть файла заполняется автоматически при отслеживании определенных событий, выглядело это будто бы в какой то момент Excel самостоятельно меняет формулу, фактически же формула принимает такой вид после заведения её средствами VBA при описанных выше условиях. Прошу прощения, что немного ввел в заблуждения, не предоставив полноты картины.
Изменено: lucky7 - 05.02.2020 09:05:04
Страницы: 1
Наверх