修改VBA代码实现复制带VLOOKUP公式的列并每隔3列粘贴
修改VBA代码实现公式复制而非仅粘贴值
原代码通过.Value属性赋值,只会复制单元格的计算结果,而非公式本身。要保留B列的VLOOKUP公式并粘贴到目标列,只需将赋值语句替换为对应公式属性即可:
修改后的代码(A1样式公式)
Sub Sco__copy() Dim cpval As Range Dim LastRow As Long With Worksheets("Sheet8") LastRow = .Cells(Rows.Count, "B:B").End(xlUp).Row Set cpval = .Range("B12:B" & LastRow) For colx = 2 To 40 Step 3 ' 替换为Formula属性,复制单元格的A1样式公式 .Range(.Cells(12, colx), .Cells(LastRow, colx)).Formula = cpval.Formula Next End With End Sub
补充说明
- 若你的VLOOKUP使用相对引用,粘贴到其他列后,公式中的单元格引用会自动适配目标列位置(例如B列公式
=VLOOKUP(A1, Data,2,0)粘贴到E列时,会自动变为=VLOOKUP(D1, Data,2,0)),上述代码完全适用。 - 若需要保留固定引用(如绝对引用),或习惯使用R1C1样式公式,可改用
.FormulaR1C1属性,修改对应行代码为:.Range(.Cells(12, colx), .Cells(LastRow, colx)).FormulaR1C1 = cpval.FormulaR1C1
内容的提问来源于stack exchange,提问作者lizardl03
相关产品推荐
相关产品推荐

