|
別解です。と言ってもロジックはほとんど同じだけど・・・。
まず、以下のコードをユーザー定義関数として使います。
標準モジュールに
'========================================================
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
jdx = 0
For idx = 1 To rng.Count
With rng
temp = .Cells((idx - 1) Mod .Rows.Count + 1, (idx - 1) \ .Rows.Count + 1).Value
End With
If temp <> "" Then
wk(1, jdx + 1) = temp
jdx = jdx + 1
End If
Next
For idx = jdx + 1 To UBound(wk())
wk(idx) = ""
Next
sort_sp = wk()
End Function
***設定方法です。
・配列数式としてワークシートに関数を設定します。
・調査範囲は、(Sheet1)のセルA1〜D3だとします。
・Sheet2のセルA1〜L1を選択して下さい(理由は、4列*3行=調査範囲=12だから)
・選択した状態でセルA1がアクティブになっているはずです。
・そのまま、「=IF(sort_sp(Sheet1!A1:D3)="","",sort_sp(Sheet1!A1:D3))」という
数式を入力します。
・尚、セルから抜けるときは、通常のEnterキーではなく、配列を使っていますから
Ctrl+Shift+Enterキーで抜けて下さい。
これで設定終了です。
Sheet1のデータを追加してみて下さい。並び変えられているはずですが・・。
|
|