选择单元格并用公式替换内容

时间:2015-03-17 13:18:24

标签: excel vba

这是我在这里发表的第一篇文章,之前我只做了非常有限的vba,所以请原谅任何错误!

我想用相对于每个单元格的公式替换大量单元格的内容。

单元格都在同一列中,并且当前包含一个不同的公式,我想用新公式替换它。

到目前为止,我已经能够选择细胞了,但用公式替换内容已经躲过了我! (下面有比下面更多的单元格,这只是一个例子)。

这是我到目前为止所得到的:

Sub SelectSpecificCells()
    'selects all cells needing change
    Union(Range("A2, A5, A8, A11"), Range("A14, A17")).Select
End Sub

我想选择以下单元格:

A2, A5, A8, A11, A14, A17

并将其内容更改为: = B2,= B5,= B8,= B11,= B14,= B17

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

这非常特定于您的示例,但也许您可以将其修改为您实际需要的内容。 A2将具有公式" = $ B $ 2"。此代码将放在工作表模块中。如果您想要在常规模块中使用它,则必须更改" Me"引用工作表对象或活动表。

Sub test()
    Dim specificCells As Range
    Dim cell As Range

    Set specificCells = Union(Me.Range("A2, A5, A8, A11"), Me.Range("A14, A17"))

    For Each cell In specificCells
        cell.Value = "=" & cell.Offset(0, 1).Address
    Next
End Sub

评论后的新方法,根据需要调整列:

Sub test()
    Dim row As Long
    Dim maxRow As Long

    row = 2
    maxRow = 17
    Do Until row > maxRow
        Me.Cells(row, 1).Value = "=" & Me.Cells(row, 2).Address
        row = row + 3
    Loop
End Sub

答案 1 :(得分:0)

试试这个:

Sub test()
    Dim specificCells As Range
    Set specificCells = Union(Sheet4.Range("A2, A5, A8, A11"), Sheet4.Range("A14, A17"))
    specificCells.FormulaR1C1 = "=INDIRECT(""RC[1]"",FALSE)"
End Sub