海外旅行から帰ってきたら、まず何を食べる?

お世話になります
エクセルが3つあるとします下記

大阪方面.xls
コード|太郎|次郎|三郎|四郎|
0111|  1|   | | 1 |
0112|  |  1| | |
0113|  |  1| | |
0114|  |   | | |

京都方面.xls
コード|田中|次郎|五郎|四郎|
0111|  2|   | | 2 |
0112|  |  1| | |
0113|  |  3| | 1|
0114|  1|   | | |

奈良方面.xls
コード|田中|次郎|五郎|四郎|
0111|  2|   | | 2 |
0112|  |  1| | |
0113|  |  3| | 1|
0114|  1|   | | |



上記3件のエクセルをを合計させたいのですが
■問題点
*名前がランダムに入っている
*名前の件数も決まっていない(セルのF20~BH20までのどれかに名前が入る)行数は1619です。
上記の内容からすべてに関数を入れるのは非常に重たくなりそう
*エクセルファイルは3つとは限らない。
*エクセルファイル名が決まっていない

■やりたいこと
VBAのフォームにテキストボックス(ファイル場所表示用)を設置しダイアログボックス呼び出し用ボタンを設置(10個ぐらい)
必要なxlsを指定し実行ボタンで下記のような計算をさせたいのが理想です。

合計.xls
コード|太郎|次郎|三郎|四郎|田中|五郎|
0111|  1|   | | 5| 4 | |
0112|  |  4| | | | |
0113|  |  7| | 2| | |
0114|  |   | | | 2 | |


Win XP
オフィース2003
わかる方ご教授願います。

A 回答 (5件)

ANo.2です。


F20:BH1639の範囲をスキャンして、
...............A...............B...............C
..1.............CODE.........名前................数値
..2.............0111.........太郎................1
..3.............0111.........四郎................1
..4............0112.........次郎................1
..5............0113.........次郎................1

という形に変換して、あるブックの特定シートに、ズラズラと下側に書き足していきます。対象ブックが変わっても、引き続き書き足していき、最終的に集計はピボットテーブルにお任せしようという案です。
変換部分は、二次元配列処理の基本ですから、説明するまでもないですよね?

この回答への補足

説明不足で申し訳ありません
集計するFormatが決まっており
基本的に集計前のFormatと集計後のFormatは同じです
よってピボットテーブルは不可と言われました;;

補足日時:2008/08/29 15:48
    • good
    • 0

ANo.4です。



合計を表示するブックに既にコードと名前が入っているとした場合。
集計したい各ブックからコードと名前をキーにしてDictionaryオブジェクトを用いてまとめ、
合計.xlsのコードと名前の交差ポイントをワークシート関数のMATCH関数で求めて代入していく。
って言う感じになるのかな。(未検証ですけど)

コードと名前が事前に入っていない場合は、更にややこしいかも。

どちらにしても、それ以前がよくわかってませんのでスル~かな。

この回答への補足

いえいえ貴重な御意見です
当方VBA初心者なので助かります

補足日時:2008/08/29 16:31
    • good
    • 0

ANo.1です。



>10個のテキストボックスも必要です
>ダイアログのURL記載欄です
>ダイアログは計算するエクセルを指定します
ダイアログのURL記載欄?
とは読み込むブックのフォルダ名と言う事でしょうか。
フォルダは複数ある?それとも1つのフォルダに全てのブックがあるのですか?

どちらにせよANo.2さんの方法が良いように思います。
(でないと結構面倒かも)

この回答への補足

そのようですね
ありがとうございます

補足日時:2008/08/29 15:37
    • good
    • 0

ファイルが入っているフォルダー位は特定できるのではありませんか?


考えられるワークフローとしては、
1.ダイアログを表示してフォルダーを指定
2.フォルダー内のエクセルファイルのリストを取得
3.ファイルリストをUserFormのListBoxに表示して、複数選択
4.開いたブック(複数)のデータを、データベースのレコード形式に変形して、あるシートに集約。
5.ピボットテーブルで、目的の形のデータを取得。
といった所ではないでしょうか。
ワークフローがお気に召したら、分からないところをご質問下さい。

この回答への補足

あ、複数選択の手がありましたね^^
複数選択させる方法は、一部分まではわかるのですが、テキストボックスに記載された(複数)をワークシートに集約して(落とし込)それを集計させる方法がわかりません。


あと集約させるときに、重複している名前を合計させるのかな?
なにとぞご教授願います
できればVBAで例などありましたら助かります。

補足日時:2008/08/28 23:02
    • good
    • 0

>ダイアログボックス呼び出し用ボタンを設置(10個ぐらい)


と言うのがよく分からないです。
(なぜ10個も必要なのか。テキストボックスは1個?)
ダイアログとは何を呼び出そうとしているのですか?

組み込みダイアログボックス一覧
http://homepage3.nifty.com/boole/reference2.htm

この回答への補足

10個のテキストボックスも必要です
ダイアログのURL記載欄です
ダイアログは計算するエクセルを指定します

補足日時:2008/08/28 22:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!