|
▼kanabun さん:
回答ありがとうございます。
>
>こんな方法はどうでしょう
>Sheet1に元表があって、これを Sheet2 に 31列づつCopyします。
>そのとき、32列目に 連番を振っておきます。
>全列コピーし終わったら、Sheet2全体を(32列目をキーにして)ソート
>します。
>これで指定の順に並び替えられます。
>
>Sub Try1() 'Sheet1 → Sheet2
> Dim i&, j&
> Dim n&, m&
> Const Stp = 31 '31列づつ
> Dim wk() As Long
> Dim CopyTo As Range
>
> With Sheet2
> .UsedRange.ClearContents
> Set CopyTo = .Cells(1)
> End With
> With Sheet1.UsedRange
> m = .Columns.Count
> n = .Rows.Count
> ReDim wk(1 To n, 1 To 1)
> For i = 1 To n
> wk(i, 1) = i
> Next
> For j = 1 To m Step Stp 'Stp列づつまとめてCopy
> .Columns(j).Resize(, Stp).Copy CopyTo
> CopyTo.Offset(, Stp).Resize(n).Value = wk
> Set CopyTo = CopyTo.Offset(n)
> Next
> End With
> With Sheet2.Cells(1).CurrentRegion
> .Sort Key1:=.Columns(Stp + 1), Header:=xlNo'列見出しなし
> .Columns(Stp + 1).Clear
> End With
>
>End Sub
上記の方法で行うことができました。ありがとうございます。
ただ、データが1行(横)ではなく、1列(縦)の場合もあるのですが、
その場合はどこがどう変わるのでしょうか。
例えとしては、
あ
い
う
え
お
か
き
く
け
こ
これを、
あか
いき
うく
えけ
おこ
こうしたいです。
|
|