マクロ(Excel)で検索して値の返し方について

このQ&Aのポイント
  • マクロの初心者です。関数でいうvlookupなどを使って、検索した値を反映させるマクロをお教え下さい。
  • ファイル名「担当ID.xls」のB列へ「顧客名簿.xls」から検索したC列(地域)を返したいです。
  • お手数おかけしますが、全くの初心なので、マクロの説明コメントも記載して頂けると助かります。
回答を見る
  • ベストアンサー

マクロ(Excel)で検索して値の返し方について

マクロの初心者です。関数でいうvlookupなどを使って、 検索した値を反映させるマクロをお教え下さい。 ファイル名「担当ID.xls」のB列へ「顧客名簿.xls」から 検索したC列(地域)を返したいです。 お手数おかけしますが、全くの初心なので、マクロの 説明コメントも記載して頂けると助かります。 ■ファイル名:担当ID.xls 列A         B      C 顧客番号 地域  担当ID A-1111       ?  os123 A-2222       ?  nr456 A-3333       ?  wk789 ■ファイル名:顧客名簿.xls ■シート名:Sheet1 列A      B     C 顧客番号  名前   地域 A-1111   A   大阪 A-2222   B   奈良 A-3333   C   和歌山 以上です。よろしくお願いいたします。

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

  • ベストアンサー
  • tgook
  • ベストアンサー率48% (96/198)
回答No.2

マクロサンプル作ってみました。 http://tk27051980.web.fc2.com/tools/VBADownload_03.html あくまでサンプル程度です。 コードは 「担当.xls のサンプル」 の方にあります。 コメントも記述してあります。 「顧客名簿.xls のサンプル」と合わせて試してみてください。 単純な?アルゴリズムでコーディングさせていただきました。 今アップロードしてあるものは、データ数が 担当.xls <= 顧客名簿.xls の関係の時のみ動作します。 担当.xls、顧客名簿.xlsとも、A列2行目から空白セルまで、幾つデータがあるかを調べた後、その結果から動作するようになっているので、途中に空白セルがあるとそこまでしか処理されません。 担当.xls を開くとマクロの有効/無効が出てくるので有効をクリック後、 ツール(T)→マクロ(M)→マクロ(M)で、Sheet1.SampleMacro を実行してみてください。 この手はマクロで組もうとすると色々方法がありますね。 他の言語でも似たようなことをやってきたならともかく、どの言語もやったことが無くて、本件のマクロでプログラミング入門しますという初心者の方には結構難しいレベルなんじゃないかな?とコーディングしていて思いました。

goozy838
質問者

お礼

tgook様 マクロを作成していただきありがとう御座いました。 「顧客名簿.xls」ファイルを開いて選択するマクロには驚きました! コメントも記載していただいて非常に分かりやすかったです。 このマクロで勉強もさせていただきます。 お忙しい中、お手数おかけしました。 本当にありがとう御座いました。

その他の回答 (1)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

vlookupということですが、 バーの「fx」を押して、数式ガイダンス通り行う作業はしていないのか?。 B2はそれで試すくらいはできるかと思う。 それができたのかできなかったのか。 マクロにしたい、というのは一気に設定してほしい。 B2から下のデータがあるまでをってところか?。 マクロの何を期待しているのか?。 1セルでの設定をやってみるのが先だと思うが・・・。

関連するQ&A

  • エクセル2007 マクロについて教えてください

    エクセルのデータが2個あります。 それぞれ、ファイル名は 顧客データ.xlsと個別シート.xlsです。 顧客データ.xlsには、10名のお客様の情報があり、A1セルには ID番号 と入力してあり、 A2~A11セルにID番号が入力されています。 『個別シート.xlsにマクロで顧客データ.xlsのデータをコピーし、ID番号のフォルダをデスクトップに新規作成し、ID番号を付けて保存する』マクロを作成中です。 顧客番号が1234のお客様のデータを、個別シートにコピーし、デスクトップに1234というフォルダを新規作成し、その中に 個別シート_1234.xls というファイル名で保存をしたいです。 顧客データを自動でコピーするまではできましたが、それ以降ができません。 MkDir "C:\ Documents and Settings\xxx\デスクトップ\nknk\ID " ChDir "C:\ Documents and Settings\xxxi\デスクトップ\nknk\ID " ActiveWorkbook.SaveAs Filename:="個別シート_" & ID & ".xls" ActiveWorkbook.Close マクロを実行すると『実行時エラー76:パスが見つかりません』とエラーになります。 (フォルダ作成の命令文のところが黄色くなります。) ちなみに、個別シートの指定したセルに、IDはコピーされています。 正しく実行できる文を教えてください。また、以降の命令文は正しいでしょうか。 よろしくお願いします。  

  • excel2003 VBAマクロの作成

    すいません、下記のような条件を満たすマクロのサンプルコードをお願いします。 ■前提条件 ・「検索元データ」はマクロ.xlsの中にある ・「検索先ファイル」は管理ファイル.xlsである ・マクロ.xlsファイルのA列にはデータがn個ある(セル範囲A2:A(n+1)まで) ・C:\one\two\three\管理ファイル.xls のフォルダ位置である(絶対パスで指定する) ・管理ファイルの中にはSheet1,Sheet2,Sheet3・・・・Sheet10の10コのシートがある ■マクロでしたいこと (1)A列のデータが管理ファイル(ブック内)に記載されているかチェックする (2)A列のデータをチェックしたら、下記の通りに列にチェック情報を記載する B列 データがいくつあったか(管理ファイルに記載されていない場合は0と表示) C列 データが記載されているシート名(B列が0の場合は0と表示) (3)次のデータへ (4) (1)-(3)をA列のデータがなくなるまで繰り返す (5)データがなくなったら終了(保存せず閉じない) 以上です。 よろしくお願いします。

  • excel2000マクロ抽出方法

    2つのファイルがあります。ブック名A.XLS シート名 WORK              ブック名b.XLS シート名 SORT              ブック名A.XLS シート名 WORKに下記のデータが入っています。 AD 1300G A227550 000PA505(C列2行目) 200112(F列)200201(G列)200202(H列)200203(I列)200204(J列)200205(K列)→1行目固定データ AD 1300G A227550 000PA533(C列3行目)   ブック名b.XLS シート名 SORTに下記のデータが入っています。 AD 1300G A227550 000PA505(A列2行目)200112(E列)200201(F列)200202(G列)200203(H列)200204(I列)200205(J列) →1行目E列~J列のデータは都度変わっている AD 1300G A227550 000PA533(A列3行目)    データ抽出条件  ブック名A.XLS シート名 WORKの F列~K列の1行目の列データとブック名b.XLS シート名 SORTの  E列~J列の1行目の列データが同じで、ブック名A.XLS シート名 WORKのC列の2行目以降のコードと  ブック名b.XLS シート名 SORTのA列の2行目以降のコードが同じだったら  ブック名b.XLS シート名 WORKの E列~J列の同じ行にデータを入れる。違うときは、  ブック名b.XLS シート名 WORKのデータはそのままにする。 上記の条件を満たしたマクロの記述の仕方を教えてください。 以上よろしくお願いします。

  • エクセル2000マクロ検索方法

    Aのファイル a.xls シート名 aaa Bのファイル b.xls シート名 bbb Aのファイルに下記のデータベースがあります。   A列 B列   0001 100   0002 200   0004 300 Bのファイルに下記のデータベースがあります。   A列 B列   0001 300   0002 200    抽出条件方法 AのファイルとBのファイルのA列を参照して違うものだけを、Aのファイルから 別のファイルに取り出す方法をマクロでの記述方法を教えてください。 別のファイルに取り出すデータは、下記の通リです。   A列 B列   0004 300 以上よろしくお願いします。

  • excel2000マクロ記述方法

    抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター     B列 C列   D列    E列 項目名 倉庫  翻訳  ソート  非表示項目     A057 レオナ工場  1     A870 セ新港    2    Y     A887 セ日向    3 もう1つのファイル 例ファイル名B.xlsシート名WORK     A列   B列   c列    d列    E列    連結コード  品名  倉庫 出荷1  加工1  AA 0G120 0G120  A870 0 0 0 AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0     

  • Excel2000マクロ_大量のシート名を楽に変更するマクロ

    何方か、回答を宜しくお願いします。 deta.xls(多数のシートが有る)シート名変換.xls(マクロが書いてある) 上記の2つのファイルが有りますが、やりたいことはdeta.xlsがアクティブの 時にショートカットでマクロAを起動して、シート名変換.xlsの「シート名」と いうシートのA1から下方向にdeta.xlsのシート名を所得する。 そして、マクロ終了後所得したシート名を変えて。 deta.xlsがアクティブの時にマクロBを起動して、「シート名」のA1から下方向に deta.xlsのシート名を変更する。 宜しくお願いします。 下記参考 Sub マクロA() Dim i As Worksheet ThisWorkbook.Worksheets("「シート名」").Columns("A:A").ClearContents '書き込む前にA列のデータをクリア Dim WS As Worksheet For Each WS In Worksheets

  • エクセルの一致検索マクロについて

    申し訳ありません。お力かして下さい。 ~~~~~~~~~~~~ ◆シート名(役員一覧)  A列   B列   C列  田中   藤田   秋山・・・・  清水   小田   北山・・・・ ◆シート名(役員名簿)  A列   B列     会計   田中  総務   秋山  会計   近江  書記   堀田  ・  ・  ・ ~~~~~~~~~~~~~ とある時に,シート名(役員一覧)に入力された名前と完全一致する 名前をシート名(役員名簿)のB列より検索し,その行を色付けなどで チェックできるマクロの作成に滞っております。 どなたか何とかお力かしてください!!!

  • EXCELでコマンドボタンを使用したマクロ

    EXCEL2003を使用しています。 A列にプロジェクト名、B列以降の列にデータが入っています。 A列のプロジェクトについて、ランダムに担当者が10名います。その担当者名はどこのセルにも記載していません。必要ならば別シートに記載してもOKです。 担当者名の列をどこかに挿入し、その担当者名で並べ替えることはしません。 今あるシートを、各担当者がデータを入力し易くしたいのです。 例えば、マクロのコマンドボタンを使って、各担当者にIDをつけ、そのIDを入力後ボタンを押したら、A列のプロジェクトが抽出されるシートを作成したいのですが、 マクロを教えてください。 例) 【現在のシート】 A列(プロジェクト名)B列 C列  D列  … さかな       100  100  300  … 野菜        500  650  200  … くだもの      200  150   90  … 鍋         80   200  500  … 鉄板焼き      800  400  700  … : 【定義】 A氏担当プロジェクト=さかな、鍋 B氏担当プロジェクト=野菜、鉄板焼き C氏担当プロジェクト=くだもの ID A氏=111 B氏=222 C氏=333 【作成したいシート】 111を入力後、コマンドボタンを押したら、 A列(プロジェクト名) B列  C列  D列  … さかな        100  100  300  … 鍋          80   200  500  … が抽出される。 解りにくいかもしれませんが、ご回答の程よろしくお願いいたします。

  • エクセルのマクロ

    以下の処理をするマクロを教えて頂きたいのですが。 ファイルab.xlsのSheet1のA1からA100までのデータを、ファイルcd.xlsのSheet3のC列にコピーする。 ただし、Sheet3のC列には既にデータが入力されているので(空欄も有)、一番末端に付け足す形にする。 続けて、ファイルab.xlsのSheet2のA1からA100までのデータを、ファイルcd.xlsのSheet3のC列に、前と同様のやり方でコピーする。 宜しくお願いいたします。

  • 【Excel2003】マクロの実行

    お世話になります。 フォルダー内全てのエクセルファイルに、あるマクロを実行したいのですが可能でしょうか? 例としましては フォルダー「変更ファイル」 以下中にあるファイル ------------------------ ファイル「A.xls」 ファイル「B.xls」 ファイル「C.xls」 ファイル「マクロ.xls」←ソートを行うマクロ入り ------------------------ 「変更ファイル」フォルダー内の「マクロ.xls」を実行してA,B,Cファイル(フォルダー内全てのファイル)内データーを各ファイル毎ソートしたい。 この作業はマクロ.xlsのマクロをカスタマイズしてすることは可能でしょうか? 可能ならやり方を教えてください。 お願いいたします。

専門家に質問してみよう