假设一张纸上的每5行我有一个公式SUM,总计上面5行。所以在A6
我有=SUM(A1:A5)
和A12
=SUM(A7:A11)
我有A1:A1000
等等向下移动。
是否可以将Excel VBA中的大范围值复制到范围{{1}}而不会破坏我的公式?
换句话说。无论目的地在哪里都是值,都要覆盖它。如果是公式,请留下它。
保护配方奶粉是正确的方向,为我的问题寻找解决方案吗?
更新 我想将列E(仅包含值)复制到列A(包含黄色单元格中的公式和白色单元格中的值)。我想将这些值复制到白色细胞中,使黄色细胞保持平静(不破坏公式)。
答案 0 :(得分:1)
在对它进行求和之前,只测试指定的单元格是否包含公式。
For i = 1 To 100
If Cells(i, 1).HasFormula Then
Else
Count = Count + Cells(i, 1)
End If
Next
答案 1 :(得分:1)
根据我的知识,无法通过简单的复制粘贴或公式来完成。
尝试使用宏来解决此问题。以下宏可根据您的要求完美运行。如果源列和目标列名分别不是“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
答案 2 :(得分:1)
如果您不需要保留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
答案 3 :(得分:0)
只要在同一行中的A列和E列中的总单元格对齐,此提议的解决方案就可以提供您想要的结果。即A6和E6,A17和E17,A33和E33等。知道我正在回复一个旧帖子,但您不知道谁会在寻找类似的解决方案,干杯。
Sub valueAssignment()
'Copy E range to A range, without overwriting formulas
Dim Col As Long
Dim Row As Long
For Row = 1 To 1000
If Cells(Row, 1).HasFormula = False Then
Cells(Row, 1).Value = Cells(Row, 5).Value
End If
Next Row
End Sub