• ベストアンサー

該当リストにない行を削除させる方法

以下のようなファイル構成で、ワークシート2に記載した該当リストを参照して、該当しない行をワークシート1から削除させるマクロを教えて下さい。 【ワークシート1】 A列 B列 C列 ・・ X列 1組 山田 10 ・・ 10 1組 田中 10 ・・ 15 2組 鈴木 15 ・・ 20 3組 高木 20 ・・ 15 【ワークシート2】 山田 鈴木 ↓↓↓ 実行結果 A列 B列 C列 ・・ X列 1組 山田 10 ・・ 10 2組 鈴木 15 ・・ 20

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

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

各シート1行目からデータがあると仮定して。 Sub try() Dim myDic As Object Dim r As Range, rr As Range Set myDic = CreateObject("Scripting.Dictionary") With Worksheets("Sheet2") For Each r In .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)) myDic(r.Value) = Empty Next End With With Worksheets("Sheet1") For Each rr In .Range(.Range("B1"), .Cells(Rows.Count, 2).End(xlUp)) If Not myDic.Exists(rr.Value) Then rr.ClearContents End If Next .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)).Offset(, 1) _ .SpecialCells(xlCellTypeBlanks).EntireRow.Delete End With Set myDic = Nothing End Sub 一例として。

negisama
質問者

お礼

回答ありがとうございます。 イメージどおりの動作が出来ました。 マクロは素人なので、非常に勉強になりました。 >各シート1行目からデータがあると仮定して。 実際はタイトル行もあるので、読み始めのセル番地を変更することで 利用する事ができました。 即利用可能な回答を頂きましたので、非常に助かりました。 ありがとうございます。

関連するQ&A

  • Excel 条件に該当する行の異なるセル参照

    エクセル初心者ですが、質問をさせて頂きます。 関数を利用してSheet2に下記のような記録データを貼り付け   A   B  C   D 1 名前 組 成績  組内順位 2 山田 1  280   1 3 伊藤 1  233   2 4 佐藤 3  298   1 5 山本 2  264   1 6 斉藤 3  215   2 7 田中 2  256   2 Sheet1のC列に該当者名を参照する方法はございませんでしょうか?    A  B   C 1  組 順位 名前 2  1  1 3  1  2 4  2  1 5  2  2 6  3  1 7  3  2 [=INDEX(Sheet2!A:A,MATCH(AND(Sheet2!B:B=A2,D:D=B2),Sheet2!A:D,0))] このような形でC2から検査値をずらして 試してみているのですがなかなかうまくいきません。

  • エクセル あるコードを含む行ごと、他のシートに反映させたい。

    こんばんは。 エクセルで以下のような表を作成しています。 [シート1]   A列   B列   C列  D列 1 コード  担当   日付  ・・・ --------------------------------------- 2 S679   山田   9/1  ・・・ 3 S679   田中   9/2  ・・・ 4 S680   山田   9/2  ・・・ 5 S679   鈴木   9/4  ・・・ ・ ・ ・ また、[S679]・[S680]というシートを作成し、 [シート1]のA列にコードを入力するごとに、該当のシートに行ごと データを反映させる方法はありますでしょうか。 上の例でいくと、 [S679]シートには   A列   B列   C列  D列 1 コード  担当   日付  ・・・ --------------------------------------- 2 S679   山田   9/1  ・・・ 3 S679   田中   9/2  ・・・ 5 S679   鈴木   9/4  ・・・ というように。 [シート1]にデータを入力するごとに、 該当コードの列のデータを[S679]・[S680]シートに反映させる方法があれば、 どうぞご教示をお願いします。 文中の至らぬ点はご指摘いただければ都度補足いたしますので、 よろしくお願いいたします。

  • 対象月を抽出して必要項目だけを表示させるには

     下図【ワークシート1】のようなリストから、対象月をワークシート2に抽出させたいのですが、ワークシート2は即印刷可能な形式とするため、対象月を単純に抽出するのではなく、必要な項目だけを抜き取りリスト化させるマクロを実現させたいと考えています。  高度なマクロはまるっきり分からないので、ご教示願います。  なお、対象月は下図例では2月分を抽出させるため「2009/2/?」と記載してありますが、抽出させるために入力する形式は拘りません。 (例えば「<2009/2/1,>2009/2/28」と言った表現でも結構です) 【ワークシート1】  A列  B列   C列   D列  E列  F列   ・・  X列 1 A店 商品a 2009/1/10 承認 山田 2009/1/11 ・・ 鈴木 2 B店 商品b 2009/2/5  否認 田中        ・・ 松田 3 C店 商品c 2009/2/20 否認 鈴木        ・・ 本田 4 B店 商品a 2009/2/25 承認 田中 2009/2/27 ・・ 山本 5 A店 商品c 2009/3/1  承認 加藤 2009/3/2  ・・ 大石 【ワークシート2】上の任意の場所  (例えばA1) 2009/2/? 【ワークシート2】出力例   A列  B列  C列  D列    E列 10 B店 商品b 否認       松田 11 C店 商品c 否認       本田 12 B店 商品a 承認 2009/2/27 山本

  • エクセルで該当者データを抽出してリスト化できず・・・悩んでいます

    いつもエクセルテクニックを学ぶために活用させていただいております。 今回はみなさまの過去の質問を見ても解決できなかったので、質問させていただきました。 ■使用しているデータ  営業スタッフ向けに顧客リストを作成しています。  私のほうで、全営業スタッフの担当する顧客名、業種、購入額の一覧を作りました。  【EXCELのシート1】  A列   B列   C列  D列   営業  顧客名  業種  購入額 1 山田  A社   食品   10万 2 山田  B社   食品   20万 3 山田  C社   医療   10万 4 田中  D社   食品   30万 5 田中  E社   小売   15万 ■作りたいもの  各営業スタッフが自分の名前を入力すると、自分の顧客の名前、業種、購入金額を検索でき、リスト化できる機能です。  具体的にいうと・・・  1)シート2のA1に自分の名前(例:山田)を入力  2)シート2のA3以下に担当顧客が表示される 【EXCEL シート2】   A列   B列   C列  D列 1 山田 2 3 山田  A社   食品   10万 4 山田  B社   食品   20万 5 山田  C社   医療   10万 私自身マクロに詳しくなく・・・大変困っております。 オートフィルタを使えばいいのですが、営業スタッフが エクセルに精通しておらず恐らく使いこなせないのです。 「A1に自分の名前を入力してください」と言うだけで リスト化できる機能についてどなたかご教授いただければ幸いです。  

  • エクセルで検索、並び替えの方法

    エクセルで以下のような並び変えはできないでしょうか? エクセルでA列とB列に名前が入っています。 A列、B列の名前は若干違います。 B列の名前をA列に揃えて並び変えることはできないでしょうか?  「処理前」       「処理後」  A   B        A   B 伊藤  山田      伊藤         山田  田中      山田  山田 鈴木  鈴木      鈴木  鈴木 田中  伊集院     田中  田中                     伊集院 宜しくお願いします。

  • Excel VBA 検索して該当行を抽出

    はじめまして、下記のように、Excelでマクロを組みたいのですが 組み方がわかりません。 ご教授願えませんでしょうか。 MS Ofiice2010 生徒数500名ほど シート1には生徒の生徒番号、氏名などがあります。      A     B     C     D 1 生徒番号   氏名   備考 2 120001     田中 3 120002     山田  試験時休み 4 T120009    相田   転入 シート2には生徒の成績表:生徒番号、氏名、国語、算数、理科、社会 生徒番号でソートされていません。      A     B     C     D     E     F    1 生徒番号   氏名   国語   算数   理科   社会   2 120001     田中   80    65     65     75 3 T120009    相田   90    85     80     80 シート1の生徒番号でシート2生徒番号を検索して、該当したら成績を シート1の検索した生徒番号のD列以降にコピーしたいのですが      A     B     C     D     E     F     G 1 生徒番号   氏名   備考   国語   算数   理科   社会 2 120001     田中         80    65     65     75 3 120002     山田  試験時休み 4 5 10 T120009    相田   転入    90    85     80     80 お手数ですが、ご教授願えますでしょうか。 よろしくお願いいたします。

  • テーブルの結合・・・

    教室テーブル id, class 1, A組 2, B組 3, C組 生徒テーブル id, name 1, 佐藤 1, 山田 2, 鈴木 3, 田中 3, 後藤 3, 加藤 という二つのテーブルがあります。 これらをLEFT JOINで結合したのですが。 A組, 佐藤 A組, 山田 B組, 鈴木 C組, 田中 C組, 後藤 C組, 加藤 となってしまいます。 これを同じ教室名でまとめて、 A組, 佐藤 山田 B組, 鈴木 C組, 田中 後藤 加藤 というように表示したいのです。 できればクエリだけで解決したいのですが・・・ よろしくお願いします。

    • ベストアンサー
    • MySQL
  • エクセルで条件に一致する複数の列を取得するには

    下のような「得点」という名前のシートがあります。 (「田中」のセルがA1です。)  [ 田中 ][ 10 ]  [ 山田 ][ 21 ]  [ 佐藤 ][ 76 ]  [ 鈴木 ][ 53 ] 別の「組」シートで、以下のようになっています。  [ A ][ 田中 ]  [ A ][ 佐藤 ]  [ B ][ 山田 ]  [ C ][ 鈴木 ] ここで、「組」シートのどこか空いているセル(例えばF1)に、 「Aの組の点数の合計値」を表示したいと思っています。 考えた方法としては、  1.まず「組」シートのA1からD1を順番に見て、  2.値が「A」になっている場合のみ、そのひとつ右の名前を取得して、  3.「得点」シートで、取得した名前を探し、その点数を取得し、  4.それを全て足す という感じなのですが、どういう式を書けば良いのか分かりません。 度々すみませんが、よろしくおねがい致します。

  • VLOOKUP関数でエラーの表示された行だけを削除するにはどうすればい

    VLOOKUP関数でエラーの表示された行だけを削除するにはどうすればいいでしょうか。 http://okwave.jp/qa/q5920035.html の質問にて作成したワークシートCがあります。 ワークシートCのA列はドラッグして日付を埋めたので、昇順で365日日付が並んでいます。(2005年1月1日~現在まで) B列~K列までは、ワークシートA(為替)、ワークシートB(株式)からVLOOKUPで引っ張ってきた数値が入っています。 ドラッグして日付を埋めたので、A列にはマーケットが開いてない土日も日付が入っていますが、その結果、土日の日付を参照した行には#N/Aというエラーが表示されている状態です。 (Ex, A3は2005/01/02という日付が入っていて、B3~K3は#N/Aというエラーが表示されている状態です。) この#N/Aが表示されている行を削除するにはどんなマクロを組めばいいのでしょうか。 #N/Aを判別するようなものにすればいいんだと思いましたが、その具体方法が分かりません。 マクロも初心者なので、出来るだけ具体的に教えて頂けると助かります。 宜しくお願いします。

  • エクセルで複数行を検索し該当するセルと求める。

    お知恵を拝借したいのですが。 1チーム4名で10チームの組合せ表を作りたいのですが、 例)    1   2     3    4    5 A 1組目 山田太郎 鈴木一夫 佐藤一郎 佐々木清 B 2組目 山下清  山田栄二 斉藤仁司 仲居靖 C 3組目 豊田一郎 小田琢磨 小林琢磨 中村博 ・ ・ ・ J 10組目 安田孝三 千田卓也 木村洋二 田中譲二 セル「K2」にセル「K1」で入力した氏名を入れると該当する組名を返す関数は無いでしょうか? 「K1」山田栄二→「K2」2組目 皆さんアドバイスをお願いします。

専門家に質問してみよう