dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
下記のコードは添付ファイルをのように
反時計回り90ど回転
実行前
1 4 7 10
2 5 8 11
3 6 9 12

実行後
10 11 12
7 8 9
4 5 6
1 2 3

知りたいこと
下記の★の部分がわかりません。
教えてくれませんでしょぅか

Sub aaae()
Dim i As Long, k As Long
Dim Val

Val = Range("A1").CurrentRegion


ReDim x(1 To UBound(Val, 2), 1 To UBound(Val, 1))

For i = LBound(Val, 1) To UBound(Val, 1)
For k = LBound(Val, 2) To UBound(Val, 2)
x(UBound(x, 1) - k + 1, i) = Val(i, k)     '★ここの -k+1 の部分がわかりません
Next
Next
Range("A13:C16") = x

Stop

End Sub

A 回答 (1件)

こんにちは



元のn行目が、変換後のn列目になることはお分かりと思います。

例えば、単純に
 x(k, i) = Val(i, k)
とした場合は、変換後の1列目は上から順に
 1、4、7、10
となることもわかるでしょう。
(行番号と列番号を入れ替えているだけなので)

実際の目的に合わせるには、上記で変換後の行の順序を逆順にする必要があるので、行番号の添え字を
 項目数(=行数)- k +1
とすることで逆転しています。

例示の場合は、行数が4なので、上式で「項目数=4」として kを1→4まで変えながら計算してみれば、
 4、3、2、1
の順で得られることがわかると思います。
(これによって、逆順にできていることになります)
    • good
    • 0
この回答へのお礼

ありがとうございました。
例示の場合は、行数が4なので、上式で「項目数=4」として kを1→4まで変えながら計算してみれば、
 4、3、2、1

こいうことなんですね

お礼日時:2021/08/13 12:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!