• ベストアンサー

エクセルVBAで複数VLOOKUP

お世話になります エクセルが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 わかる方ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

ANo.2です。 F20:BH1639の範囲をスキャンして、 ...............A...............B...............C ..1.............CODE.........名前................数値 ..2.............0111.........太郎................1 ..3.............0111.........四郎................1 ..4............0112.........次郎................1 ..5............0113.........次郎................1 … という形に変換して、あるブックの特定シートに、ズラズラと下側に書き足していきます。対象ブックが変わっても、引き続き書き足していき、最終的に集計はピボットテーブルにお任せしようという案です。 変換部分は、二次元配列処理の基本ですから、説明するまでもないですよね?

BSR123
質問者

補足

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

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

ANo.4です。 合計を表示するブックに既にコードと名前が入っているとした場合。 集計したい各ブックからコードと名前をキーにしてDictionaryオブジェクトを用いてまとめ、 合計.xlsのコードと名前の交差ポイントをワークシート関数のMATCH関数で求めて代入していく。 って言う感じになるのかな。(未検証ですけど) コードと名前が事前に入っていない場合は、更にややこしいかも。 どちらにしても、それ以前がよくわかってませんのでスル~かな。

BSR123
質問者

補足

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

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

ANo.1です。 >10個のテキストボックスも必要です >ダイアログのURL記載欄です >ダイアログは計算するエクセルを指定します ダイアログのURL記載欄? とは読み込むブックのフォルダ名と言う事でしょうか。 フォルダは複数ある?それとも1つのフォルダに全てのブックがあるのですか? どちらにせよANo.2さんの方法が良いように思います。 (でないと結構面倒かも)

BSR123
質問者

補足

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

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

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

BSR123
質問者

補足

あ、複数選択の手がありましたね^^ 複数選択させる方法は、一部分まではわかるのですが、テキストボックスに記載された(複数)をワークシートに集約して(落とし込)それを集計させる方法がわかりません。 あと集約させるときに、重複している名前を合計させるのかな? なにとぞご教授願います できればVBAで例などありましたら助かります。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>ダイアログボックス呼び出し用ボタンを設置(10個ぐらい) と言うのがよく分からないです。 (なぜ10個も必要なのか。テキストボックスは1個?) ダイアログとは何を呼び出そうとしているのですか? 組み込みダイアログボックス一覧 http://homepage3.nifty.com/boole/reference2.htm

BSR123
質問者

補足

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

関連するQ&A

  • エクセルのVBAで、ファイルの読込・出力をしたい。

    エクセル2003 VBAで、得意先コードを基準に(質問1)(質問2)を行いたいです。 申し訳ありませんが、教えて下さい。 (質問1) VBAで得意先コードが一致するものを読みたいです。 [表A.xls]に[表B.xls]の前月残高を読み込ませたい。 [表A.xls] 得意先コード |  氏名  |  前月残高  | ----------------------------------------------- 11121234   | 山川太郎 |   2000   | 131235432   | 山川次郎 |   500   | 113456789   | 山川三郎 |    0   | 12214321   | 山川四郎 |   20000   | 12119876   | 山川五郎  |  1500   | 137896543   | 山川六郎 |    0   | [表B.xls] 得意先コード | 前月残高 | ----------------------------- 11121234   |  10000  | 131235432   |    0 | 113456789   |  25000 | 12214321   |     0 | 12119876   |   5620 | 137896543   |   800 | [表A.xls]の前月残高をクリアして、 [表B.xls]の前月残高を読み込みたい。 【読み込み結果】 得意先コード |  氏名  |  前月残高  | ----------------------------------------------- 11121234   | 山川太郎 |   10000   | 131235432   | 山川次郎 |    0   | 113456789   | 山川三郎 |   25000  | 12214321   | 山川四郎 |     0  | 12119876   | 山川五郎 |    5620  | 137896543   | 山川六郎 |    800  | (質問2) その後、VBAで得意先コードの先頭2文字を指定して、 [表A.xls]から[表C.xls]を出力したい。 得意先コードは、8桁や9桁があります。 【得意先コードの先頭2文字を、例えば11と指定して出力した結果】 [表C.xls] 意先コード |  氏名  |  前月残高  | ----------------------------------------------- 11121234   | 山川太郎 |   10000   | 113456789   | 山川三郎 |   25000  |

  • エクセルで文字列を数えて一覧表にしたいのですが

    たとえばですが、2人一組で配達に行きます。 メンバーは、太郎、次郎、三郎、四郎、五郎・・・と多人数です。 A1に太郎、B1に三郎 A2に次郎、B2に五郎 A3に太郎、B3に次郎 ・ ・ ・ と、いうような表ができます。 このとき、*郎は何回配達にいったのかをカウントしたいのです。 *郎は、A、Bのどちらに登場するかわかりませんし、 何回も登場しますし、組み合わせもばらばらです。 最終的に、太郎 15回、次郎 8回、三郎 21回・・・というように分かるようにしたいので、 仮にD1に太郎、E1に次郎、F1に三郎・・・の名前 (ダブって登場する名前を一つにまとめて、登場する全ての名前を残したい)、 D2に太郎、E2次郎、F2に三郎の回数(登場した名前の回数を数字で求めたい) というようにしたいのです。 エクセルの詳しい方、よろしくお願いします。

  • 【Excel VBA】コピー&ペーストの自動化

    以下のエクセル表があり、同じ日付ごとのデータを自動的に別のシートに移したいです。 例えば、別のシートに、2004/1/1に書かれているデータのみを移す。(シート2参照) それをVBAで書くにはどうすればいいでしょうか。 マクロの記録をするのではなく、この表の日付を増やしたり変えたりしても機能するようにコードを書きたいと思っております。 For LoopとIf thenを使い、A1セルがそれより下のセルの値と異なるまでコピーし続ける、、といった作業をすればよいのでしょうか。 全くの初心者で勉強中です。よろしくお願いいたします。 列行 A B 1 2004/1/1 太郎 2 2004/1/1 次郎 3 2004/1/1 三郎 4 2004/1/1 一郎 5 2004/1/1 五郎 6 2005/3/3 三郎 7 2005/3/3 次郎 8 2005/3/3 太郎 9 2005/3/3 四朗 10 2006/2/2 次郎 11 2006/2/2 一郎 12 2006/2/2 太郎 シート2 2004/1/1 太郎 次郎 三郎 一郎 五郎 シート3 2005/3/3 三郎 次郎 太郎 四朗 シート4 2006/2/2 次郎 一郎 太郎

  • エクセル関数

    同一ファイル内に二つのシートがあります。 「シート1」 コード  名前   金額       100001 太郎   15,000    200001  次郎 20,000    200501 次郎´ 25,000 300001  三郎 30,000    400001  四郎 35,000 「シート2」 (1)    (2)    (3)    (4)       15,000 20,000 30,000 35,000  25,000 上記のようにシート1にある6桁のコードの先頭の数字を元に、シート2の上部にある(1)~(4)の下に金額が表示されるようにしたいのですが、ご教示の程お願い致します。

  • 岡崎次郎三郎や茶屋四郎次郎

    岡崎次郎三郎信康や茶屋四郎次郎の「次郎三郎」とか「四郎次郎」ってどういう意味ですか? ほかに有名な、例えば「太郎次郎」とか「三郎次郎」って名前が付く歴史人物はいますか? 教えて下さい。 お願いします。

  • エクセルの同じ名前をカウントする方法

    エクセルの同じ名前をカウントする方法 初歩的な質問ですみません。 山田太郎 田中一郎 鈴木三郎 高橋次郎 鈴木三郎 高橋次郎 鈴木三郎 A1のセルにこういった状態で名前が入力されていた場合に 山田太郎 1 田中一郎 1 鈴木三郎 3 高橋次郎 2 となるように同じ名前がいくつあるかをカウントさせ上記のように表示させたいのですが、 どうしたらいいのでしょうか? (同じシートでも、別のシートでもどちらでも構いません) 至急お答えいただけるとありがたいです。 よろしくお願いします。 

  • エクセルVBAの質問です

    sample.xlsがあり内容は下記のように A列に名前、B列に数字が入り、行数は一定でありません 田中一郎 3 鈴木健一 5 佐藤太郎 8 田中一郎 5 田中一郎 2 佐藤太郎 7 鈴木健一 3 佐藤太郎 9 鈴木健一 54 佐藤太郎 8 田中一郎 9 このエクセルシートにコマンドボタンを付け、VBAでコマンドボタンを押した場合 指定したエクセルファイル”kekka.xls”に 田中一郎 19 鈴木健一 62 佐藤太郎 32 と言うように、名前別でその氏名の横の数字の合計を表示させたいと考えています。 何卒お知恵をお貸しください、お願いします。

  • エクセルのことで質問です

    うまく説明ができないかもしれないのですがよろしくお願いします<(_ _)> シート1 会社名  氏名   携帯番号 ○○会社 山田太郎 090-****-**** ○○会社 佐藤次郎 090-****-**** ○○会社 田中三郎 090-****-**** ××会社 松尾四郎 090-****-**** ××会社 小泉五郎 090-****-****         ・         ・         ・ シート2 会社名  氏名   携帯番号 ××会社 松尾四郎 というデータがあって、シート2で××会社の松尾さんの携帯番号を抽出したい時は何の関数を使えば良いでしょう?

  • Excelのドロップダウンリストについて

    Sheet1において, A列 B列 1 田中太郎 2 佐藤次郎 3 山田三郎 のようなリストを作成してあるとします。 Sheet2において, A1のセルに1を入力すると,B1のセルに田中太郎と表示される様,B1にVLOOKUP($A1,Sheet1!$A$1:$B$3,2,0)と入力しています。 この時,A1をドロップダウンリストで入力する場合,リストの表示と入力値を変更するようなことはできるのでしょうか。 すなわち,リストには, 田中太郎 佐藤次郎 山田三郎 と表示され, 田中太郎 を選ぶとA1には1が入力され,B1にはVLOOKUP関数の効果として田中太郎と表示されるといった具合です。 当方,HTMLは理解しておりますので,HTMLで意図をご説明させていただければと思います。 HTMLでプルダウンボックスを使う場合の入力として, <SELECT name="ボックス名"> <OPTION value="1">田中太郎</OPTION> <OPTION value="2">佐藤次郎</OPTION> <OPTION value="3">山田三郎</OPTION> </SELECT> ということになります。 これと同じようなことがエクセルで可能なのかどうかという質問でございます。

  • エクセルで未入力のセルを印刷しない方法。

    多人数の出欠表を作成しています。 出席者は○、欠席者は×をセルに入力していますが、○の人だけを印刷したいのです(未回答は未記入)。 例えば、 1 山田太郎 ○ 2 田中次郎   ←未回答 3 佐藤三郎 × 4 小林四郎 ○ 5 横田五郎 ○ この場合、表示は上記の通りでよいのですが、印刷する場合に、 出席と回答した1、4、5の人のみが印刷されるようにしたいのです。 ご存知の方がいらっしゃったら回答よろしくお願いします。

専門家に質問してみよう