Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10560 / 76734 ←次へ | 前へ→

【71720】Re:表の整理
発言  UO3  - 12/4/2(月) 14:10 -

引用なし
パスワード
   ▼ドカ さん:

こんにちは

遅くなりました。
アルゴリズムですが、部分、部分のコードの使い方などは既にご説明していますので
アップされた実例(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に落とし込みます。

17 hits

【71555】表の整理 ドカ 12/3/16(金) 20:43 質問
【71557】Re:表の整理 ドカ 12/3/16(金) 20:54 発言
【71559】Re:表の整理 何か変じゃないですか 12/3/16(金) 22:44 発言
【71561】Re:表の整理 ドカ 12/3/17(土) 4:42 発言
【71560】Re:表の整理 UO3 12/3/16(金) 23:09 発言
【71562】Re:表の整理 ドカ 12/3/17(土) 4:57 お礼
【71564】Re:表の整理 UO3 12/3/17(土) 9:39 回答
【71671】Re:表の整理 ドカ 12/3/27(火) 14:10 質問
【71672】Re:表の整理 UO3 12/3/27(火) 16:43 発言
【71673】Re:表の整理 UO3 12/3/27(火) 17:20 発言
【71674】Re:表の整理 ドカ 12/3/27(火) 20:11 発言
【71675】Re:表の整理 ドカ 12/3/28(水) 9:08 お礼
【71676】Re:表の整理 UO3 12/3/28(水) 10:34 発言
【71677】Re:表の整理 ドカ 12/3/28(水) 11:10 発言
【71678】Re:表の整理 UO3 12/3/28(水) 15:08 発言
【71679】Re:表の整理 UO3 12/3/28(水) 15:13 発言
【71683】Re:表の整理 ドカ 12/3/28(水) 20:34 お礼
【71688】Re:表の整理 ドカ 12/3/30(金) 8:29 質問
【71689】Re:表の整理 ドカ 12/3/30(金) 9:06 質問
【71690】Re:表の整理 UO3 12/3/30(金) 10:27 発言
【71691】Re:表の整理 UO3 12/3/30(金) 11:46 発言
【71692】Re:表の整理 UO3 12/3/30(金) 21:10 発言
【71720】Re:表の整理 UO3 12/4/2(月) 14:10 発言
【71724】Re:表の整理 ドカ 12/4/3(火) 7:59 お礼
【71728】Re:表の整理 UO3 12/4/3(火) 13:16 発言
【71731】Re:表の整理 UO3 12/4/3(火) 16:54 発言
【71725】Re:表の整理 ドカ 12/4/3(火) 8:15 質問
【71726】Re:表の整理 UO3 12/4/3(火) 12:39 発言
【71727】Re:表の整理 UO3 12/4/3(火) 12:44 発言
【71736】Re:表の整理 ドカ 12/4/4(水) 15:59 お礼

10560 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free