|
おはようございます。
いくつもの間違いあったので、訂正します。
>別解です。と言ってもロジックはほとんど同じだけど・・・。
>
>まず、以下のコードをユーザー定義関数として使います。
>標準モジュールに
>
>'========================================================
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のデータを追加してみて下さい。並び変えられているはずですが・・。
「ツール」−−「オプション」---「計算方法」で自動に設定して確認して下さい
|
|