|    | 
     ▼ドカ さん: 
 
こんにちは 
 
遅くなりました。 
アルゴリズムですが、部分、部分のコードの使い方などは既にご説明していますので 
アップされた実例(3列1組が2組ある例)から転記イメージが、どのように作られるかを、 
簡単にお話します。 
 
まず、登場するDictionaryは 3 つあります。 
 
Dic のキーは名前です。データとして、その名前の転記イメージをセットする「子Dictionary」 
(のオブジェクト)を格納してあります。 
この子Dictionaryが、どのように作られるかの説明になります。 
説明の中では、「親Dic」、「子Dic」とよびます。 
また、3列1組のブロックの最初の列番号、1,4,7,・・・・「ブロック」とよびます。 
子Dic は キーが 当該の名前の当該ブロック内での行番号になります。 
また、データは、3要素 X 2 ブロック = 6 個の要素を持つ1次元配列です。 
 
もう1つ、dicRow があります。 
これは、当該の名前の当該ブロック内での行番号取得用のカウンターで、 
キーが 名前/ブロック、データが 行番号です。 
さて、処理は、各行、左から右に、各ブロックを処理していきます。 
で、名前ごとに、それぞれ処理がされるのですが、それらの処理はセットする子Dicが 
異なるだけで、どの名前でも同じですので、ここでは "加藤" を例に説明します。 
 
1.まず、2行目の2ブロック目(4列目)の加藤が最初に処理されますね。 
2.で、親Dic("加藤") には、まだ何も登録されていませんので、加藤用の子Dicを生成して 
  ここにおさめます。 
3.dicRow の 加藤/4 に 1を加算します。この時点では 加藤/4 の登録が無いので 
  結果は 1 になります。 
4.加藤用の子Dicのキーの 1 が、まだ生成されていないので、以下のイメージで 
  初期化データをセットします。 
 
+------+------+-----+------+------+-----+ 
|   |   |   |   |   |   | 
+------+------+-----+------+------+-----+ 
 
5.で、ここに、今処理している2行目の加藤のデータ、加藤、花、4 をセットします。 
 結果は以下のようになります。 
 
+------+------+-----+------+------+-----+ 
|   |   |   |加藤 |花  |4  | 
+------+------+-----+------+------+-----+ 
 
6.次に、加藤でいえば、4行目の1番目のブロック(列番号は1)のデータを処理します。 
 既に親Dicには火等が登録されているので2.は行いません。 
7.dicRow の 加藤/1 に 1を加算します。この時点では 加藤/1 の登録が無いので 
  結果は 1 になります。 
8.加藤用の子Dicの 1 は、4.で既に作成されていますので、4.は行いません。 
9.すでにある子Dicのデータに4行目の1番目のブロックの加藤、花、4 をいれます。 
 結果は以下のようになります。 
 
+------+------+-----+------+------+-----+ 
|加藤 |花  |4  |加藤 |花  |4  | 
+------+------+-----+------+------+-----+ 
 
10.4行目の2番目のブロック(4列目)の加藤、みかん、2 を処理します。 
11.既に、親Dicはできているので、2.は行いません。 
12.DicRowの加藤/4 に 1を加算します。この時のdicRowの加藤/4 は 3.で、 
   既に 1 になっていますので、結果は 2 になります。 
13.加藤用の子Dicのキーの 2 がまだ生成されていないので、以下のイメージで 
   初期化データを追加します。 
 
+------+------+-----+------+------+-----+ 
|   |   |   |   |   |   | 
+------+------+-----+------+------+-----+ 
 
14.ここに、加藤、みかん、2 をセットします。 
 結果は以下のようになります。 
 
+------+------+-----+------+------+-----+ 
|   |   |   |加藤 |みかん|2  | 
+------+------+-----+------+------+-----+ 
 
15.これまでの結果、加藤用の子Dic は以下の姿になっています。 
 
+------+------+-----+------+------+-----+ 
|加藤 |花  |4  |加藤 |花  |4  | 
+------+------+-----+------+------+-----+ 
|   |   |   |加藤 |みかん|2  | 
+------+------+-----+------+------+-----+ 
 
16.他の名前についても、それどれ同様の処理がなされ、各名前の子Dicが 
 できあがります。 
17.親Dicから子Dicを順番に取り出し、できあがっている子Dicの配列イメージを 
 順番にSheet2に落とし込みます。 
 
 | 
     
    
   |