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

列用と行用の 2 つのインデックスを追加し、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 に答える