当我复制并粘贴时,excel会向下移动单元格引用。例如。第3行对单元格B2的引用成为对第4行第B3行的引用。
使用剪切和粘贴时,不会发生这种情况,并且对单元格B2的引用仍然是对B2的引用。
我想要剪切和粘贴的行为,但不会丢失原始内容。
我已经尝试录制宏,然后按F2,SHIFT-HOME,复制和转义,并且excel记录绝对没有。但这就是我想要宏做的事情,所以当我复制它时,它会完美地复制它。
答案 0 :(得分:2)
将以下内容放入标准模块中:
Dim sForm As String
Sub ccopy()
sForm = ActiveCell.Formula
End Sub
Sub ppaste()
ActiveCell.Formula = sForm
End Sub
然后将快捷键 Ctrl + e 分配给 ccopy ,快捷键 Ctrl + f 到 ppaste
这应该模拟复制/粘贴,但保持单元格引用不变。
可以修改多个单元格。
修改#1:强>
这个新的 ppaste 将处理以下情况:
单细胞 - >多个单元格
Sub ppaste()
Dim r As Range
For Each r In Selection
r.Formula = sForm
Next r
End Sub
答案 1 :(得分:0)
经过大量的工作,这就是我想出的:
Dim formulas() As String
Dim initCopyCol As Integer
Dim initCopyRow As Integer
Dim columns As Integer
Dim rows As Integer
Sub copyFormulaRange()
initCopyCol = Selection.Column
initCopyRow = Selection.row
columns = Selection.columns.Count
rows = Selection.rows.Count
ReDim formulas(1 To columns, 1 To rows)
For i = 1 To columns
For j = 1 To rows
formulas(i, j) = Cells(initCopyRow + j - 1, initCopyCol + i - 1).Formula
Next j
Next i
End Sub
Sub pasteFormulaRange()
Dim initPasteCol As Integer
Dim initPasteRow As Integer
initPasteCol = Selection.Column
initPasteRow = Selection.row
For i = 1 To columns
For j = 1 To rows
Cells(initPasteRow + j - 1, initPasteCol + i - 1).Formula = formulas(i, j)
Next j
Next i
End Sub