34本目 2次元配列を回転させる

VBA100本ノック

VBA100本ノック 34本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

#VBA100本ノック 34本目
今回は2次元配列を使った頭の体操です。
2次元配列と回転方向を引数で受け取り、以下の変換後の配列を返すFunctionを作成してください。
回転方向は2種類
・右90度回転
・左90度回転
※引数のデータ型、指定方法は任意
※回転サンプルは画像を参照

解答

Sub 配列回転1()

    Dim ary(), 回転前の行数, 回転前の列数
    ary = Range("B2").CurrentRegion
    回転前の行数 = UBound(ary, 1)
    回転前の列数 = UBound(ary, 2)
    
    Dim Newary()
    ReDim Newary(1 To 回転前の列数, 1 To 回転前の行数)
    
    Dim i, j
    For i = 1 To 回転前の列数
        For j = 1 To 回転前の行数
            Newary(i, j) = ary(j, 回転前の列数 + 1 - i)
        Next j
    Next i
    
    Range("K1").Resize(回転前の列数, 回転前の行数) = Newary
    
End Sub

Function 配列回転(ary2 As Range) As Variant
    
    Dim ary(), 回転前の行数, 回転前の列数
    ary = ary2
    回転前の行数 = UBound(ary, 1)
    回転前の列数 = UBound(ary, 2)
    
    Dim Newary()
    ReDim Newary(1 To 回転前の列数, 1 To 回転前の行数)
    
    Dim i, j
    For i = 1 To 回転前の列数
        For j = 1 To 回転前の行数
            Newary(i, j) = ary(j, 回転前の列数 + 1 - i)
        Next j
    Next i
    
    配列回転 = Newary

End Function
新人君
新人君

めちゃくちゃ

難しそうですね!

ブチョ
ブチョ

サービス問題だな!

新人君
新人君

嘘でしょ…

コメント

タイトルとURLをコピーしました