我想将列中的公式复制到行中。公式在地址中没有$ 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
提前感谢您的帮助:)
答案 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