Как скопировать значения в объединенных ячейках с одного листа на другой?

#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, а затем изменять код по мере необходимости…