Excelマクロで検索結果を別シートにコピーする方法

このQ&Aのポイント
  • Excel2010の「ホーム」タブの「編集」グループより「検索と選択」の「検索」で住所録の「名前」を検索し、結果を別シートにコピーする方法について教えてください。
  • Sheet1には会社名、名前、住所、電話番号の項目があります。検索された名前に該当するデータのA列からD列までをSheet2の同じ表にコピーしたいです。
  • VBAを使わずに、Excelマクロで検索結果をまとめて別シートにコピーする方法についてアドバイスをいただけますか?
回答を見る
  • ベストアンサー

Excel マクロ 検索結果を別シートにコピー

Excel2010の「ホーム」タブの「編集」グループより「検索と選択」の「検索」で住所録の「名前」を検索しています。 「検索する文字列」に「名前」を入力して「すべて検索」をクリックすると検索結果がでますが、検索結果の表示方法が「セル番地」だけを表示しているため一つ一つそのセルをクリックして内容を確認しています。 これを検索された複数のデータを住所録一覧表の項目名に合わせてまとめて別シートにコピーしたいのですが・・・。 Sheet1に次の項目名で住所録を作成しています。 A列:会社名 B列:名前 C列:住所 D列:電話番号 「名前」で検索して、検索されたデータのA列からD列までのデータを別シート(Sheet2)の同じ表にコピーしたいのです。 名字だけの検索ですので結果が複数ある場合は、すべての検索結果を数行にわたってコピーできればいいのですが・・・。 このメニューのコマンドを使わなくても、何か他の方法でVBAの例があれば教えていただきたいと思います。 宜しくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

結論から言うとわざわざマクロなど使わずとも。 推奨: データタブの「オートフィルタ」を取り付け、「テキストフィルタ」から「指定の値を含む」(あるいは等しい、始まる等)で名前を記入して絞り込み、まとめて選んでコピー貼り付ければ完成です。 それとも。 とにかく操作をしたくないのでマクロをどうしても使いたい、というご相談なら。 作成例: sub macro1()  dim s as string  s = inputbox("NAME?")  if s = "FALSE" then exit sub  application.screenupdating = false  worksheets("Sheet2").cells.clearcontents  with worksheets("Sheet1")   .autofiltermode = false   .range("A:D").autofilter field:=2, criteria1:=s & "*"   .range("A:D").copy destination:=worksheets("Sheet2").range("A1")   .autofiltermode = false  end with  application.screenupdating = true end sub 一応念のため: 手を動かして操作したほうが、たとえば「どこにどんな具合に貼り付けたい」とかその時々の状況に応じて機動的に作業できますので、結果的には仕事は早いと思いますよ?

hakuhoku
質問者

お礼

早速のお返事ありがとうございます。 「オートフィルタ」の方法を使ってみることにしました。 仰る通り、少ないデータの場合は手作業で「コピー」‐「貼り付け」の方が早いですね。 でも、VBAも勉強したいので回答を頂いたコードを使って試したいと思います。 ありがとうございました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

手作業をVBAとして記述してくれる「マクロの記録」機能を利用してみては? 冗長な部分が多々ありますが、何をしているか見ることができますよ。

hakuhoku
質問者

お礼

早速のお返事ありがとうございます。 「マクロの記録」を使ったのですが「次を検索」ボタンではマクロの記録が記述されるのですが「すべて検索」のボタンでは何も記録されません。 Sub Macro1() End Sub の表示だけで中身がありません。 動作上では確認できるのですが、コードが記述されないため役に立ちませんでした。

関連するQ&A

  • エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の

    エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の商品データ)にあるデータを入荷した商品名で検索し、その検索結果の行を入荷した数量分コピーして、シート4(印刷)に上から順に貼り付けます。その結果をバーコードラベルで印刷し、商品に貼り付けていきたのですがどなたか教えてください。現在は、いちいちシート毎で「Ctrl+F」で検索画面を出し、商品名を検索し、なければ別のシートで検索し、該当するものが見つかれば選択して、行をコピーして印刷シートに貼り付けています。とても時間がかかっています。 シート1から3の構成は、ジャンル別で分かれていますが、 A列:商品名、B列:メーカーコード、C列:自社コード、D列:売価、E列:原価、F列:登録日 です。バーコード印刷のマクロは出来てます。 複数のシートから検索し、コピーして、印刷シートに貼り付けるマクロです。 エクセルは2003で、OSはXPのSP3です。

  • Excel マクロ シートをコピーするには

    初心者です。 今、Excelファイルが2つあります。 1つは、Book1で、Sheet1にA列だけ文字列の入った表があります。 セル  文字列 A3  AAA A4  BBB A5  CCC A6  DDD  :   : のような感じです。 もう1つ、Book2があり、それにはいろいろな単価表のシートが多数入っています。 そのシート名はBook1,Sheet1の表にある文字列と全く同じものもあります。(表にはないシート名のシートもあります) 今、Book1,Sheet1の表にある文字列と同じ名前のシートを Book2からBook1へコピーしたいのです。 Book1の表にある文字列は、必ずしもBook2にあるシート名と同じとはかぎらないので、 IFを使って、この文字列のシートがあればコピーする というふうにしたらよいかと思ったのですが、あまりに初心者のため、 条件文にどう書いたらよいのかで困ってしまいました。 お力添えを宜しくお願いします。

  • エクセルのマクロ(値を検索して別シートにコピー)

    エクセルで下記のマクロをご教示いただけるでしょうか。 1.Sheet1のアクティブセルの右に5つ、下に1つのセルを起点として下方向に6セル分をコピー (例)Sheet1のアクティブセルがA2だとすると、F3~F8をコピー 2.Sheet1のアクティブセルの値(yy/mm/dd形式の日付)と同じ値のセルをSheet2のA列から検索し、該当セルの右に2つ分のセルに行列を入れ替えて値のみをペースト (例)Sheet1のアクティブセル(A2)の値がSheet2のA4セルにあるとすると、Sheet2のC4に行列を入れ替えて値のみペースト 3.Sheet1のアクティブセルの値がSheet2のA列に2つ以上あれば、「同じ日付が複数あります。」というメッセージを表示

  • マクロで「別シートを検索・元シートへ転記」したいのですが・・・

    昨夜から20時間くらい悩んでおります・・・。どなたかよろしくお願いします。 (概要) エクセルで 「オーダー受付」と「顧客データ」の2つのシートがあります。 ●「オーダー受付」のセルには、K3電話番号 K4お名前 K5住所1 K6住所2 と縦に表示用セルを設けています。 ●「顧客データ」のセルには、A1 A2 A3 A4 と横に上記データを記録してあり、すでに1万行を超えています。 (やりたい事) ●お客様から電話があったときに「オーダー受付」シートの K3に電話番号をいれマクロを実行すると、「顧客データ」から残りの項目である 名前・住所1・住所2 が転記されるようにしたいです。 ●もし新規のお客様で、検索結果なしの場合は引き続きお名前・住所1・住所2 とお尋ねし、後からコピペでデータ一覧へ足しています。この辺の操作は検索・転記が解決してから挑戦しようと思っています。 是非、ご回答ください。

  • Excel データの一部を別シートにコピー

    Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。

  • Excelのシート間のコピー&貼付け

    皆様にお聞きしたいのですが。。m(_ _)m あるシートで作成したデータ(罫線等は入れてません。セルに入力したデータのみです)を、一番上の項目名のみまず最初に別シートにコピーしました。 そして元データでフィルタで抽出した間違いがあったデータのみ、複数の行番号をドラッグで選択して別シートにコピー&貼付けをしていたら、なぜか元のシートと列の数が合わなくなりました; 列の数は40前後と多いのですが・・・ 一番上の項目名と途中か合わなくなっていました(T-T) 普通に行を選択してコピー、そして別シートへ貼付けしていただけなのですが。。 こうゆうことってあるのでしょうか??? どなたか、どうかご教授ください。宜しくお願い致します。。 補足 ちなみに、ちゃんとコピー先のシートのA2(項目行の先頭の下の行)にコピーしたのですが・・。

  • excel マクロで複数シート検索し行をコピー

    excel2010 マクロで下記のようなことをしたいのですが どのようにしたら良いか教えていただけないでしょうか? (1)sheet1のA1を検索用の欄とする (2)sheet2・sheet3・sheet4にはそれぞれデータを入力しておく (A列~H列 まで使用し、行数は多くても500程度) (3)sheet1のA1に検索したい単語を入力することで、sheet2・sheet3・sheet4全てのA列を検索する (4)一致(部分一致)したら、その行をsheet1の10行目以降にコピーする なお複数ヒットすると思われるため、複数ヒットした場合には行を追加しながらコピーしたいです。 マクロでは無理なのでしょうか? どのように書いたらよいか、参考になるHPでも助かりますので、教えていただきたく よろしくお願いします。

  • エクセルで検索して別シートに抽出したい

    エクセル2003で顧客リストを作成しています。 そのリストの中から特定の文字列を検索し(あいまい検索)、その項目が含まれる行ごと 別シートに抽出をしたいです。 ほかの方のご質問も参考に試してみたのですが、上手くいきません。 1行目に各項目名 A日付 B担当1 C担当2 D管理番号 E顧客名 2行目からデータです。 ほぼ担当1か顧客名で検索し、検索結果は複数になることがほとんどです。 どなたかよろしくお願いいたします。

  • EXCELマクロ 検索

    Excelマクロで 検索とその結果のコピーを行いたいのですが、全くの素人のためご教授願えればと思います。 Excel2002で 2つの表から共通する部分をKEYに付随するデータ抜き出したいと思っています。関数VLOOKUPを使えば簡単な作業かと思いますがVBAではそのVLOOKUPやFIND、それにLOOPなどの使い方が今ひとつ理解 できません。 具体例として 表1には A-Z列まで約1000行のデータが存在します。 表2は表1と同じシート上の直ぐ隣列AA-AK列まで表1より必ず多い行数のデータが存在します。また表1のA列にあるデータは すべて必ず表2のAA列に含まれます。 行いたい作業は、VLOOKUPのような検索で、表1A列と表2AA列に共通したデータがあった場合、表2の該当セルを基準としてALからBJ列セルに表1の該当行のデータB-Z列をすべてコピー貼り付けすることです。 A・AA列とも同列内では重複も空白もなくソートされています。 これら以外の列には同じValueのデータや空白が存在します。またデータ件数(行数)も表1・2とも一定ではなく都度変動します。 解りやすくご説明いただけると幸いです。宜しくお願いいたします。

  • 複数シートからのデータ検索、コピー

    シートから条件に合致するデータを検索して、別ファイルの新しいシートにそれぞれ必要なデータ部分だけをコピーしたいのですが、検索するシートも複数で、また検索条件も複数のためか、過去の質問等を見ましても良く分かりませんでした。(マクロ等は余り使ったことが無い初心者です。)そこで、どなたかお詳しい方に教えて頂ければ、と思いまして投稿致しました。 シートは”貸借対照表”と”損益計算書”の2つあります。 抽出データは4行目からなのですが(A4から)、A列:コード(数字)、B列:勘定科目(文字)、C列:繰越額(数字)、D列:借方額(数字)、E列:貸方額(数字)、F列:残高(数字)、G列:比率(%)となっております。 各シートの構成として、A列は三桁または四桁の数字なのですが、(A4から)A列が三桁の数字の行を選んで、なおかつ、D列とE列が両方とも0で無い行のB列、D列、E列の値を二つのシートそれでれで検索し、別シートにコピーしたいのです。(どちらのシートからでも構いません。A列のコードの値はシート毎ではダブらないので、両方で抽出されたB、D、E列の値が列記できれば良いです。) ただ、2つのシートの列数は決まっておらず、一方のシートの抽出データともう一方のシートの抽出データがダブってコピーされない様に、 したいな、とは思っております。 桁数での検索はLEN関数があるらしいのですが、複数のシートが対象となっており、マクロという機能を使った方が良いのでしょうか? 当方も初心者ゆえ、分かりやすく教えて頂ける方、よろしくお願い致します。

専門家に質問してみよう