2

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

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

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

提前感谢您的帮助:)

4

2 回答 2

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
于 2015-01-11T06:00:10.253 回答
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
于 2013-10-16T13:25:32.423 回答