• ベストアンサー

エクセルで、異なる日付の入っている行を抽出する。

1 あ  20060102  20060102  さる 2 い  20060203  20060203  いぬ 3 う  20060303  20060301   きじ 4 え  20060404  20060404  ねこ 5 お  20060501           わに 2つの列に年月日が入力されてますが、上のように数値として入力されています。 5の行のように右の列の日付が空白になっているものもあります。 この中から2つの列の日付を比較して、両方に日付が入力されていてかつ異なる行を下記のように、抽出したいのです。 3 う 20060303 20060301 きじ オートフィルタのフィルタオプションでやろうと思ったのですが、うまくいきませんでした。 よろしくお願いします。

  • fukao
  • お礼率100% (5/5)

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

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

A B  C      D      E 1 あ  20060102  20060102  さる としますね。 1)セルF1に式[if(and(B1<>"",C1<>"",B1<>C1),"NG","OK")]を設定 2)セルF1を必要なだけコピー(今回はF2からF5まで) 3)列Fにオートフィルタを設定 4)"NG"だけ拾わせる(NGが見えるのイヤなら"NG"を空白にしても可)

fukao
質問者

お礼

早速ご回答いただきありがとうございます。 実際のデータは何千行もあるものなので、途方にくれていたのですが、これで、やる気が出てきました。 助かりました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 フィルタオプションでは、このようにします。  A    B     C     D aa  bb     cc     dd  ←フィールド名をつけてください。 あ  20060102  20060102  さる い  20060203  20060203  いぬ う  20060303  20060301  きじ え  20060404  20060404  ねこ お  20060501        わに 適当な場所に、 ここでは、F2 (1行目に入れてはいけません。1行目はブランクです) =B2<>C2 マウスカーソルをデータ側に置いてから、 データ-フィルタ-フィルタオプションの設定- リスト範囲 「$A$1:$D$6」(参考例) 検索条件範囲  「$F$1:$F$2」 とすれば出てきます。 ただし、「う 20060303 20060301 きじ」 だけではなく、5行目も出てきますから、もし検索条件を =AND(B2<>C2,C2<>"") とすれば、3行目だけになります。

fukao
質問者

お礼

貴重な時間を割いて、回答を頂いた皆さんありがとうございました。 本当に助かりました。 初めて、web2.0の世界に飛び込んでみたのですが、これはすごいですね。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

シート構成がNo.1の方の書かれているようにC列とD列が日付の場合、Sheet1に表からSheet2に該当する行を抜き出すマクロです。 Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 その際、4行目から7行目は、注釈にしたがって実際のシートにあうように書き換えてください。 Sub DiffDate()  Dim WS1 As Worksheet, WS2 As Worksheet  Dim WS1Row As Integer, WS2Row As Integer  Set WS1 = Worksheets("Sheet1") '元の表があるシート名  Set WS2 = Worksheets("Sheet2") '抽出先のシート名  Const Date1Col = "C" '日付が入力されている列1  Const Date2Col = "D" '日付が入力されている列2    WS2.Cells.ClearContents  WS2Row = 1  For WS1Row = 1 To WS1.Cells(Rows.Count, 1).End(xlUp).Row   If WS1.Cells(WS1Row, Date1Col) <> "" And _   WS1.Cells(WS1Row, Date2Col) <> "" And _   WS1.Cells(WS1Row, Date1Col) <> WS1.Cells(WS1Row, Date2Col) Then    WS1.Rows(WS1Row).Copy WS2.Rows(WS2Row)    WS2Row = WS2Row + 1   End If  Next  WS2.Activate End Sub その画面でF5キーを押すか、Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。Sheet2に該当する行が抽出されます。

fukao
質問者

お礼

ありがとうございます。 私はマクロをいじったことが無いのですが、とりあえず丸写しでもいいので、やってみようと思います。

関連するQ&A

  • エクセルのオートフィルタオプションで日付を出したい。

    いつもお世話になっています。エクセルで、70人の名簿があるので、オートフィルタで「1月生まれ」の人だけを抽出したいです。 A: 「生年月日」という列に、70名それぞれの生年月日が入っている。1980年の7月26日生れなら「1980/7/26」と入力。 B: オートフィルタオプションで「(/1/)を(含む)」と条件づけるが、1件も抽出できない。 C: でも、検索で「(/1/)の(値)」を検索すると、ちゃんとヒットする。 あ: セルの表示形式→日付を「1980年7月26日」に変更してみる。 い: オートフィルタオプション「1月を含む」ではやはり1件も抽出できない。 う: でも「1月」を検索すると、ちゃんと1月と11月生まれの人がヒットする。 どうしても生まれ月ごとに抽出したいと思います。やはり、生年月日を「年」「月」「日」と別の列に分解するしか方法はないのでしょうか。どうかよろしくお願いします。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • エクセルVBA 日付で抽出、並び替え

    こういう場で初めて質問させていただきます。 どうぞよろしくお願いします。 エクセルVBAで日付(月毎)でデータを抽出し、並び替えを行いたいのですが, B列に日付が入りC~F列には帳簿の仕訳が入ります。 ここで B2 に日付が入って、C2~F2とC3~D3にデータが入った場合に オートフィルタをかけたら、3行目は日付の欄が空白なので うまく抽出できません。 なお、2行目と3行目は1つの仕訳なのでばらばらになるのも困ります。   仕訳は最低1行から最大で6行になります。 このように日付欄は1行だけど、その日付に対応する内容が数行に渡って入るような場合に日付から月毎にデータ抽出するには どのようなコードを書けばいいのでしょうか? A B    C      D     E    F  日付 借方科目 金額 貸方科目 金額  10/10 消耗品  300    現金   500        雑費   200   10/9   交際費  500    現金   500   10/8    雑費   200     現金   200 汚い表ですが、上記のような場合です。 10/10の分は2行で1つになりますので、このような場合です。 どうかよろしくご指導お願いします。 

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

  • エクセル抽出について

    初歩的な質問で大変恐縮です。 エクセルで10列×5行でひとまとまりの下に続く表があり、その中の1列目2行目に入力してある「支店」別にデータを抽出したいと思っています。オートフィルタを使うと1行づつなら抽出できるのですが、10列×5行のまとまりごと抽出する方法はありますでしょうか? つたない文章で申し訳ありませんが、ご教授ください。

  • エクセル特定の文字を含む行の抽出方法

    すいません!至急で困っております。 何千という行の中から、例えばヨドバシカメラという文字を含む行を抽出したい場合はどうすればいいでしょうか? ヨドバシカメラ~店という行なので、単純にオートフィルタでは抽出できません。 オートフィルタのオプションからもうまくいかず。。 すいませんが、何卒よろしくお願いいたします。

  • オートフィルターによって、抽出したセルにだけペーストしたい。

    例えば、 5行ごとの世帯表があります。 A列には氏名が入力されています。 2人世帯は2行しか使いませんので、下3行は何も入力されていない行です。 つまり、10世帯分で100行あり、その中に合計38名分の氏名が入力されています。 列を挿入して、B列に新しい列を作りました。 この列に、別シートの同じ世帯員の生年月日が入力された列(ブランクの無い38行の38個のセル)を貼り付ける場合、どのように貼り付けるのでしょうか。 オートフィルターで、A列の空白セルを除いてから貼り付けたら、オートフィルター解除後、空白セルにも貼り付いてしまったので、ずれてしまいました。 オートフィルターで、省いた(隠した)セルに貼り付かないように貼り付けるにはどうすればいいのでしょうか。

  • 今日の日付のデータをすばやく抽出するには・・

    売上日報をエクセルで作っています。 A列に1から順にNOを入れています(LOOKUP関数を使うためです) B列に日付を入れています。 C列に社名を入れています。 その他の列にもいろんなデータが入っています。 本日の日付だけをすばやく抽出したいと思うのですが、どうすれいいか分かりません。 オートフィルタで今日の日付を選ぶ方法はやれます。 でも、もっと早く抽出できる方法はないでしょうか? 数ヶ月分のデータが入っているため、オートフィルタの三角をおしたあと、今日の日付を探すのに結構手間取ります。 もっとすばやく抽出したいのです。どんな方法でもいいです。どなたか教えて下さい。

  • 検索したい日付からデータを抽出したい。

    こんにちわ。 キャンペーンが何日~何日までどういった内容がある、という一覧を作成しています。 Aの列が開始日、Bの列が終了日、Cの列がキャンペーン内容、です。 検索したい日付をD1のセルに入力したら、その日付に該当するキャンペーンすべてを別のシートに抽出できないでしょうか・・・ オートフィルタで抽出は出来るのですが、日付を入力しただけで抽出 させたいのですが、無理でしょうか・・・ よろしくお願いします。

  • エクセルXPのフィルター機能について

    環境はWindowsXP officeXPです エクセルのフィルターのことですが データベースで約2万件ほどあります オートフィルターのリストをみると1000ほどしかありません、しかも空白(ところどころに有)行が選択できません しかしオプションで番号分は抽出はできました。 オプションでその列の空白行って選べるのでしょうか?

専門家に質問してみよう