|
▼ドカ さん:
こんにちは
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.このように、ユニークな名前リストから全て名前を取り出すまで、ループ処理をします。
こんな程度でご理解いただけましたでしょうか?
|
|