Еще одна проблема копирования в Excel:
Как я могу скопировать рабочую таблицу из WorkbookA.xlsx в WorkbookB.xlsx без того, чтобы скопированная рабочая таблица все еще ссылалась на WorkbookA.xlsx, например, формула =B!23
становится =[WorkbookA.xlsx]!B!23
при копировании.
Я хочу сохранить «относительные» ссылки на ячейки вместо «абсолютных» ссылок на ячейки (я придумаю эту терминологию в мире Excel, если она еще не существует).
Другой возможной альтернативой, которую я не могу заставить его работать, является возможность вставлять только «значения» ячейки. Excel обрабатывает «значения» как вычисленные значения, а не фактические формулы в ячейке. Если я выбираю формулу пасты, она все равно дает абсолютные ссылки.
Подробнее о том, зачем мне это нужно: у меня есть рабочий xlsx для ежедневных операций. Нам постоянно нужно «обновлять» этот xlsx, и поэтому один человек может создать копию и свои изменения для одного листа. Одновременно другой человек может также вносить изменения в другой лист. Учитывая, что эти листы не имеют зависимых ячеек на других листах , как, например, сводный отчет, нам желательно просто скопировать и объединить листы обратно в исходный xlsx. Но «абсолютные» ссылки дают много хлопот.
select all - copy - paste special - values
чтобы иметь только значения. Если вы хотите сделать все это во время копирования, а не полагаться на конечного пользователя для выполнения этих шагов, я уже работал над этим. Сообщите нам точно, как вы хотите, чтобы это было с точки зрения WorkbookA (или 1) и WBB (2) и листа #sОтветы:
Попробуйте использовать Ctrl+ ~для отображения формул. Затем используйте Ctrl+, Aчтобы выделить все, скопируйте и вставьте его в блокнот.
Наконец, скопируйте его из блокнота и вставьте в другую рабочую книгу.
источник
Во многих случаях мне было проще сделать следующее:
[WorkbookA.xlsx]!
источник
Неподписанный ответ прямо под этим - тот, который работал для меня, с очень небольшим изменением.
Создайте и сохраните таблицу назначения.
Используйте «переместить», «скопировать» или перетащите страницу с формулами в новую электронную таблицу. Это оставляет формулы на новой странице, указывающие на старый лист. Затем сохраните новую электронную таблицу в том же месте, что и старая таблица.
Затем перейдите на вкладку «Данные»> нажмите «Изменить ссылки». Опция не будет активной, если на странице нет ссылок.
В появившемся диалоговом окне выберите имя исходного файла и нажмите «Изменить источник».
В открывшемся диалоговом окне открытия файла выберите имя новой электронной таблицы.
Нажмите Закрыть, и вы закончите.
источник
Или просто сделайте следующее:
Преобразуйте это:
к этому:
и больше никаких изменений в ваших ссылках при копировании между листами.
Если на вас не ссылается много листов, другой альтернативой будет использование
и введите имя справочного листа в ячейку B1. Теперь у вас есть только одна ячейка для обновления при копировании в новую электронную таблицу.
источник
INDIRECT
это изменчивая формула, поэтому она будет пересчитываться каждый раз (в отличие от только когда она отредактирована), что действительно может замедлить работу более сложных рабочих книг, поэтому используйте с осторожностьюКод ниже может быть адаптирован к вашим потребностям. Он берет все формулы из листа
wb1
и применяет их к листу в новой рабочей книге. Формулы применяются какString
s, поэтому нет ссылок на исходную книгу. Кроме того, этот код очень быстрый, потому что он не использует буфер обмена и не требует циклического перемещения по ячейкам.источник
Поскольку 99% ответов даже не касались исходного вопроса, вот правильный ответ.
Скопируйте листы из исходного файла (Original.xlsx) в новый файл Excel (New.xlsx), как обычно. Обычно я щелкаю правой кнопкой мыши на имени и выбираю «Переместить или Копировать ...».
Сохраните второй - вновь созданный файл (New.xlsx).
В новом файле в разделе «Данные» нажмите «Редактировать ссылки».
Во всплывающем окне выберите «Изменить источник ...»
Найдите файл (New.xlsx) и нажмите Открыть.
Все ссылки на оригинал (Original.xlsx) будут удалены.
СДЕЛАННЫЙ!
источник
Это работает для меня.
источник
Обе книги должны быть открыты, чтобы это работало . Вы запускаете этот макрос, и он скопирует
workbookA!sheet
1workbookB!sheet1
и затем заменит всеworkbookA
ссылки. Это сырой, но это работает . Очевидно, вы можете изменить код в соответствии с именами WorkbookA.xlsx, но убедитесь, что они имеют правильное расширение и остаются в кавычках.О, чтобы сделать макрос, если вы не знаете, нажмите, alt + F11чтобы вызвать редактор Visual Basic. Затем щелкните правой кнопкой мыши на WBA,
insert - module
скопируйте и вставьте приведенный ниже код в модуль. Затем нажмите, F5чтобы запустить макрос. Если макрос не запускается, возможно, это связано с тем, что макросы не включены, поэтому сохраните его и снова откройте, а когда он предложит включить макросы, включите их.источник
CTRL+H
Отдельная рутина хороша, как и сейчас, вручную , но все они не фиксируют ссылки на элементы управления, например кнопки, выпадающие списки и тому подобное; и именованные диапазоны.Я добился этого, скопировав ячейки на новый лист в обычном режиме, а затем выполнил поиск, чтобы удалить старый путь к файлу в формулах.
Например, если первая формула
=J2
и это становится=[filepath]J2
, то просто найдите и замените всю новую электронную таблицу[filepath]
и ничего не заменяйте. Это удалит его и восстановит формулу=J2
.VB не требуется!
источник
У меня была похожая проблема. Причина, по которой формулы были вставлены со ссылкой на WBA, заключалась в том, что вкладка (лист), над которой я работал в WBA, была названа иначе, чем в WBB. Для меня это всегда был «последний лист», но один назывался «MinFlow», а другой - «NormalFlow». Я переименовал оба в «Результаты», и копирование / вставка работали так, как я хотел - «относительная вставка».
источник
Выберите клетки, которые вы хотите переместить. Теперь попробуйте переместить их, перетащив n drop на другой лист (на другую вкладку).
Я знаю, это прокручивается. Вот сложная часть: просто нажмите cmd (mac) или alt (win), и он позволит вам бросить ячейки на другую вкладку.
источник
Привет, вот простое решение этой проблемы:
CTRL+F
и выберите вкладку замены.Replace with
поле, нажмитеReplace All
.Вуаля - это сделано.
источник
Еще одна хитрость - перед копированием исходного листа замените все квалификаторы формул
=
другими наборами символов (скажем###=
).Скопируйте лист поверх, затем после копирования замените спецификатор формулы обратно (заменив
###=
на=
).Убедитесь, что любые ссылки на листы в формалах также скопированы на новый лист перед ссылочным листом.
источник
Скопируйте лист как обычно. (щелкните правой кнопкой мыши вкладку и выберите «переместить или скопировать»). Это для форматирования.
Скопируйте все ячейки с исходного листа (используя Ctrl+ Aили верхний левый треугольник и Ctrl+ C)
Вставить как значения в новую книгу (на листе «шаг-1») (Параметры вставки> 123)
источник
Если вам нужно сделать это автоматически, потому что вы загружаете листы в программе VBA. Использовать этот:
Просто измените «Строка найдена в названии исходной книги». соответствовать старым ссылкам, которые вы хотите заменить. Вы можете удалить это, если заблокировать, если вы хотите заменить все ссылки.
источник
Откройте обе рабочие книги. В исходной рабочей книге (WorkbookA.xlsx) выберите лист, который вы хотите скопировать. Щелкните правой кнопкой мыши вкладку листа и выберите «Переместить или скопировать…». В диалоговом окне «Переместить или скопировать» выберите «WorkbookB.xlsx» в раскрывающемся списке «В книгу», выберите место в этой книге, куда вы хотите поместить его, и установите флажок «Создать копию». (И нажмите «ОК».)
источник
Сделайте копию листа, который вы хотите переместить листы, из которого в этом случае будет WorkbookA.xlsx. Переименуйте его, чтобы сказать «Копия WorkbookA.xlsx». Теперь откройте эту новую рабочую книгу, а также рабочую книгу, которую вы хотите переместить, в которую в этом случае будет WorkbookB.xlsx. Щелкните правой кнопкой мыши листы в созданной вами копии книги, т. Е. «Копия WorkbookA.xlsx» и выберите «переместить или скопировать», а затем переместите эти листы в WorkbookB.xlsx. Вы сделали !
источник