#excel #vba
#excel #vba
Вопрос:
У меня есть лист под названием «main», который принимает значения из листа другого файла под названием «данные».
С помощью «ActiveSheet.copy» (в файле «main») он копирует лист, но со ссылками на ячейки.
Есть ли какой-либо способ скопировать только значения листа?
Во-вторых, на моем «основном» листе есть несколько объединенных ячеек, поэтому, даже если я вручную скопирую и вставлю листы, выбрав диапазон, он не может быть скопирован из-за объединенных ячеек.
Ответ №1:
Ознакомьтесь с вариантами, которые вы получаете с PasteSpecial
:
- Значения: при этом будут копироваться не ссылки, а только значения
- Все, кроме границ: при этом сохранится форматирование объединенных ячеек
Пример — предположим, вы хотите скопировать лист1 на лист 2, где на листе 1 объединены ячейки
- На листе 1 нажмите
CTRL A
, чтобы выбрать все, а затемCTRL C
скопировать - На листе 2 выберите ячейку A1
- Теперь щелкните правой кнопкой мыши и выберите
Paste Special...
- В диалоговом окне выберите
All except borders...
Обновлено — VBA
Sub CopyWithMergedCells()
ActiveSheet.Cells.Copy //select all cells on sheet1 and copy
Worksheets("Sheet2").Select
Cells.Select //select all cells on sheet2
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=False //paste with formats preserved
End Sub
Paste:=xlPasteAllExceptBorders
это ключевой бит. Вам нужно изменить это, если вы хотите просто копировать значения (а не ссылки)
Комментарии:
1. и есть ли способ сделать это с помощью VBA?
2. смотрите отредактированный ответ… лучше всего использовать macro recorder, а затем изменять код по мере необходимости…