VBA简单宏来复制公式

时间:2013-10-16 13:03:34

标签: excel excel-vba vba

我想将列中的公式复制到行中。公式在地址中没有$ signature,因此我不能使用特殊的粘贴选项,因为它将更改每个单元格的公式中的地址。

我尝试运行宏,但它只将列中的最后一个单元格复制到行中的每个人。

Sub Zamiana()
For Each y In Range("A1:B1")
    For Each X In Range("A2:A3")
        y.Formula = X.Formula
    Next
Next
End Sub

提前感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

一种简单的方法是通过变量数组和transpose函数传输公式。

像这样:

Sub TransposeFormulas()
    Dim rSrc As Range
    Dim rDst As Range
    Dim vSrc As Variant

    Set rSrc = Range("A1:B1")
    Set rDst = Range("A2") ' top left cell of destination

    vSrc = rSrc.Formula  ' copy source formulas into a variant array

    ' size the destination range and transpose formulas into it
    rDst.Resize(UBound(vSrc, 2), UBound(vSrc, 1)).Formula  = _
      Application.Transpose(vSrc)
End Sub

答案 1 :(得分:1)

尝试添加两个索引,一个用于列,一个用于行并删除for循环, 像这样的东西

Sub Zamiana()
iR = 1
iC = 0

For Each y In Range("A1:B1")
r = y.Row + iR
c = y.Column - iC     
Cells(r, c).Formula = y.Formula
iR = iR + 1
 iC = iC + 1

Next

End Sub