| 
    
     |  | おはようございます。 いくつもの間違いあったので、訂正します。
 
 
 >別解です。と言ってもロジックはほとんど同じだけど・・・。
 >
 >まず、以下のコードをユーザー定義関数として使います。
 >標準モジュールに
 >
 >'========================================================
 Function sort_sp(rng As Range)
 ReDim wk(1 To 1, 1 To rng.Count)
 Dim idx As Long
 Dim jdx As Long
 Dim temp As Variant
 Dim b_var As Long
 jdx = 0
 b_var = rng.Rows.Count
 For idx = 0 To rng.Count - 1
 temp = rng.Cells(idx Mod b_var + 1, idx \ b_var + 1).Value
 If temp <> "" Then
 wk(1, jdx + 1) = temp
 jdx = jdx + 1
 End If
 Next
 For idx = jdx + 1 To UBound(wk(), 2) '←大きい間違い 1!!
 wk(1, idx) = "" '大きい間違い 2
 Next
 sort_sp = wk()
 End Function
 
 他にも気がついてところを訂正しておきました。
 
 
 >***設定方法です。
 >
 >・配列数式としてワークシートに関数を設定します。
 >
 >・調査範囲は、(Sheet1)のセルA1〜D3だとします。
 >
 >・Sheet2のセルA1〜L1を選択して下さい(理由は、4列*3行=調査範囲=12だから)
 >
 >・選択した状態でセルA1がアクティブになっているはずです。
 >
 
 
 ・そのまま、「=sort_sp(Sheet1!A1:D3)」という
 数式を入力します。
 空白設定しているのでこれでよかった・・・。
 
 
 >
 >・尚、セルから抜けるときは、通常のEnterキーではなく、配列を使っていますから
 > Ctrl+Shift+Enterキーで抜けて下さい。
 
 
 >
 >これで設定終了です。
 >
 >Sheet1のデータを追加してみて下さい。並び変えられているはずですが・・。
 
 「ツール」−−「オプション」---「計算方法」で自動に設定して確認して下さい
 
 |  |