
У меня есть лист, как показано ниже. Я хочу скопировать все формулы из книги B в A, но без ссылки на книгу B.
когда я делаю это сейчас, я получаю ссылку во всех моих формулах на рабочую книгу B. Но мне нужны только формулы, но привязанные к моей текущей рабочей книге (рабочая книга A)
Если я копирую простую формулу суммы, она работает, но когда формула включает таблицу, ссылка ведёт на книгу B.
вот пример формулы,
=IF(Start!$D$8="Weekly",0.000001*SUMIFS(tbl_database[Value],tbl_database[Node],H$2,tbl_database[Type],$A14,tbl_database[Accounting],$C$1,tbl_database[Filter],"No"),0.000001*SUMIFS(tbl_database[Value],tbl_database[Node],H$2,tbl_database[Type],$A14,tbl_database[Accounting],$C$1,tbl_database[Source],"<>stack",tbl_database[Source],"<>overflow"))
рабочая тетрадь А Лист а:
рабочая тетрадь B лист B
Если я перейду к строке формул и скопирую реальную формулу из книги B в A, я получу ожидаемый результат, но, как вы видите со всеми этими формулами, это может быть утомительно.
решение1
Протестировано в Excel 2010
Копирование любой части таблицы из A в B будет ссылаться обратно на A. Копирование всей таблицы (должно включать заголовки!) не ссылается обратно на A - если только формула не ссылается на другую таблицу или другой лист. Формулы в таблице, которые ссылаются на диапазон вне таблицы, но на том же листе, будут правильно ссылаться на B.
Решение (хотя и не очень хорошее) — убедиться, что в таблице нет формул, ссылающихся на другую таблицу или лист, перед копированием в B. Это можно сделать, перенеся данные из A на тот же лист.
Как упоминалось в комментариях, Ctrl H
быстрый способ решения проблемы после вставки — найти все ссылки на лист и заменить их на нулевую строку.
В комментариях не упоминается возможность именованных диапазонов, указывающих обратно на A, что, скорее всего, связано с неработающими ссылками. Вы можете попытаться смягчить это, используя область действия рабочего листа (в отличие от рабочей книги), но, скорее всего, вам все равно придется редактировать/удалять их в менеджере имен после вставки в B.
Я увлекаюсь VBA и считаю, что лучшим решением будет написать код, который генерирует исходный отчет на языке A. Это устранит необходимость копирования из A в B, просто запустите программу для генерации нового отчета по мере необходимости.
решение2
Не очень элегантно, но... почему бы не разрешить копировать ссылки, а затем не использовать функцию редактирования/замены, чтобы удалить их все?