VBA复制范围的值不破坏公式

假设在一张表中的每5行我有一个公式SUM总结了5行以上。 所以在A6我有=SUM(A1:A5) ,在A12我有=SUM(A7:A11)等等向下移动。 是否有可能将Excel VBA中的大范围的值复制到范围A1:A1000不破坏我的公式?

换一种说法。 无论目的地是什么值,都要覆盖它。 如果公式,离开它。

是保护公式细胞正确的方向寻找解决我的问题?

更新。 我想将列E(只包含值)复制到列A(包含在黄色单元格中的公式和白色单元格上的值)。 我想复制只是白细胞的价值观,保持黄色细胞的和平(不破坏公式)。

在这里输入图像说明

如果您不需要保留E列中的所有值,则可以使用以下代码进行批量复制

 'Clear source rows corresponding to column A formulas Range("A:A").SpecialCells(xlCellTypeFormulas).Offset(0, 4).Clear Range("E:E").Copy 'Paste special with Skip blanks Range("A1").PasteSpecial SkipBlanks:=True 

只要testing指定的单元格是否包含一个公式,然后总结它。

 For i = 1 To 100 If Cells(i, 1).HasFormula Then Else Count = Count + Cells(i, 1) End If Next 

根据我的知识,不能通过简单的复制粘贴或公式来完成。

尝试使用macros来解决这个问题。 下面的macros按照您的要求完美工作。 如果不是“A”和“E”,则需要更新源列名称和目标列名称。

 Dim source As Range Dim target As Range Dim lastRow As Integer Sub updateValuesNotFormulas() lastRow = Range("A" & Rows.Count).End(xlUp).Row Set source = Range("A1:A" & lastRow) lastRow = Range("E" & Rows.Count).End(xlUp).Row Set target = Range("E1:E" & lastRow) For Each srcCell In source If srcCell.HasFormula Then 'Do Nothing Else targetRow = srcCell.Row targetColumn = target.Column srcCell.Value = Cells(targetRow, targetColumn).Value End If Next End Sub