|    | 
     ▼ドカ さん: 
 
こんにちは 
 
Sample2の行の整列アルゴリズム(というほど、たいそうなものじゃありませんが) 
 
・まず、各列の氏名を作業列にコピーします。で、これを、重複を排除して 
 一意の名前のリストとして別の作業列におきます。 
 (これをユニークな名前リストとよびましょう) 
・で、次に、3列ごとの各ブロックを、氏名順に並び替えます。 
 また、ユニークな名前リストも氏名順に並び替えます。 
・これで、各ブロックも、ユニークな名前リストも、氏名の出現順は同じになりますね。 
・データ内容としては、あるブロックには田中はあるけど、あるブロックにはない。 
 で、ユニークな氏名リストには田中が必ず1つ存在するという状況になります。 
 
 ここから処理です。処理はユニークな名前リストの上から順番に行います。 
 
1.ユニークな名前リストの先頭が安部だったとします。この安部を処理します。 
2.処理すべきユニークな名前リストから取り出した氏名とデータの突合せですが、まず最初は 
 2行目(データの最初)を見ます。 
3.各ブロックの安部の数をブロックごとに把握しておきます。また、これらのなかでの 
 最大値も把握します。最大値が4件だったとします。 
4.見ている行が安部かもしれません。安部ではないかもしれません。 
 安部ではなかった場合、安部の最大値の4行の空白セル3列分をこのブロックに挿入します。 
 安部だった場合、このブロックの安部の件数が4件だった場合(つまりブロックの中で安部の最大値) 
 挿入は行いません。 
 このブロックの安部の件数が4未満の場合、4から、その件数を引いた行数分の3列の空白セルを挿入します。 
5.この結果、元のデータは、最初の行(2行目から5行目)が安部用、他のデータは、6行目以降に下げられて 
 います。 
6.で、次に、ユニークな名前リストから次の名前を取り出し、データの6行目をつき合わせます。 
7.上記、3.〜5.を実行します。 
8.このように、ユニークな名前リストから全て名前を取り出すまで、ループ処理をします。 
 
こんな程度でご理解いただけましたでしょうか? 
 | 
     
    
   |