• ベストアンサー

Excelで同じ商品名で、かつ日付が古いものを抽出する方法

ご存知の方、いらっしゃいましたらお願いします。 Excelは2003を使用しています。 複数の条件での抽出で名前が決まっているものは「フィルタオプションの設定」で行っていますが、日付が古いもの、新しいものの抽出方法がわかりません。 「同じ商品名」かつ「日付が古いもの」を抽出したいのですが、それが出来そうな関数、マクロはありますでしょうか。 当方マクロ知識は「マクロの記録」程度です。 A列  B列    C列 商品A 2007/12/01 10:00 商品B 2008/04/01 10:00 商品A 2008/05/01 10:00 現在は目視、手動で★印を別列につけ、それを抽出し削除しています。 削除フラグとして★印等をつけるようなものでも、わかれば嬉しいです。

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

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

1.商品名を第1キー、日付を第2キーとして昇順に並び替えます。 2.D1に1を入力し、D2からは=IF(A1=A2,0,1)を入力して下方向へコピー これでD列の「1」のみ抽出して削除します。

yotuba1000
質問者

お礼

削除したいものが抽出できました。 ありがとうございました!

その他の回答 (4)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.5

ANo.3の回答の式は「最古のみ」だったので改良。 =IF(MAX(IF($A$1:$A$100=$A1,$B$1:$B$100,-1))=$B1,"最新","古い") Ctrl+Shift+Enterで入力するのをお忘れなく。 これで「最新」と「古い」に分けられます。 なお「同じ日付2つ以上あって、その日付が最新の場合」は「同じ日付のどれもが最新」になるので、目で見て判断して下さい。

yotuba1000
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 この方法だと、やりたいことが出来ました! 一定の期間を経過したもの~等ではないので、とりあえず最新のもののみ抽出したかったので、とても助かりました。 ありがとうございました!

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

「日付が古いもの」だけでよろしいのでしょうか? C列の時刻も含めて古いものとかは? 別案ですが ピボットテーブル作成して A列を縦 B列を集計内に入れて  集計欄のフィールドの設定で 最小値を選択する 方法があります。 日付、時刻も含めてであれば 作業列をD列に作成 =B2+C2 下フィルして D列で集計 最小値を表示  表示書式は ユーザー定義で yy/mm/dd hh:mm とか

yotuba1000
質問者

お礼

回答ありがとうございます。 ピボットテーブルが良くわかっていないので、いったんはIF関数でやってみます。 次回、何かの時にピボットテーブルを学んでみたいと思います。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

最小の日付を見つけるなら D列にて D2=MIN(IF($A$2:$A$100=$A2,$B$2:$B$100,MAX($B$2:$B$100))) でCtrl+Shift+Enterで配列数式にする。 削除フラグを立てるなら D2=IF(MIN(IF($A$2:$A$100=$A2,$B$2:$B$100,MAX($B$2:$B$100)))=$B2,"","★") でCtrl+Shift+Enterで配列数式にする。

yotuba1000
質問者

お礼

削除フラグを付ける方法でやってたところ、 重複していないもの=空白(問題なし) 重複している商品名=一番日付が古いものが空白          =一番日付が古いもの意外に★ となりました。 この関数を調べていろいろ試してみたいと思います。 配列数式というのをもう少し学んでみます。。。 ありがとうございました!

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.2

リストの最初の行ににフィールド名を付けてください。 >日付が古いもの オートフィルターならば商品名で抽出して、 日付のフィールドを昇順に並び替えると古い順に並びます。 日付が古いものを抽出という内容だと、漠然として絞りきれませんが 何月何日より古い日付とかだと、オートフィルターオプションで日付を入力して、~より小さい、~以下等で抽出できます。 フィルタオプションの設定を使うなら 商品が商品Aで2007/8/1より前のデータという設定だと条件を 商品名  日付 商品A  <2007/8/1 のように設定します

yotuba1000
質問者

お礼

日付はバラバラなのでどうやら無理そうですが、フィルタオプションの以上以下の設定は勉強になりました。 ありがとうございました!

関連するQ&A

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

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

  • EXCELで表を抽出する

    ・A列に日付、B列に件名を入力した表があります。 ・A列の日付は、ランダムに、繰り返し現れます。 この表から、たとえば7月だけの、A列に日付、B列に件名の表を抽出する場合、 手動でする場合は、最初の表を日付順にソートし、黙視で7月分をコピーし、別表に貼り付ける、というやり方でできますが、 数式や関数で自動的にやる方法はないでしょうか? マクロが必要になりますか?

  • Excelで西暦の日付から「和暦のみ」を抽出する方法を教えてください。

    エクセル初心者です。 エクセルのオートフィルタを使って、「平成19年」「平成20年」「平成21年」ごとに表示させたいのですが…。 セルには以下のように日付が入力されているとします。   A      B      C 2007/3/14 2007/3/16 2008/3/18 2008/3/14 2009/3/16 2009/3/18 これを書式設定で「平成19年3月14日…」と和暦で表示してみても、オートフィルタでは日ごとになるだけで、「年ごと」にはなりません。 そこで、B列にA列のデータから和暦のみを抽出したらいいのではないかと考えたのですが…初心者ゆえにその方法を思いつくことができません。 西暦の日付から「和暦のみ」を抽出する事はできるのでしょうか?

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

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

  • エクセルの重複データで古い日付のものを削除する方法

    エクセルのリストの中からa列に記載されてる名前が重複しているものを抽出し、b列に記載されてる日付が新しい方を残し、日付が古い方を全て削除するマクロを作りたいのですが、どういう風に言語を記述すればよろしいでしょうか? よろしくお願いいたします。

  • 日付に絡むマクロの作り方

    エクセルのマクロ初心者です。 以下のようなデータがあり、 テキストボックスで任意の商品を指定し、 その商品と同じ日付のデータを抽出する操作をしたいです。 A列が商品名、B列が時間、C列が備考欄です。 データ数は月によりランダムですが1000程度あります。 A列   B列        C列 商品A 2011/5/1/12:00 関東 商品B 2011/5/2/2:30 北陸 商品C 2011/5/1/18:15 近畿 (商品Aと入力すると・・・) A列   B列        C列 商品A 2011/5/1/12:00 関東 商品C 2011/5/1/18:15 近畿 (商品Aと同じ5月1日のデータ(商品C)を抽出) DAY関数で日付だけ引用してなんとかやってみようと思いましたが、 私の現状の技量ではできませんでした。 まだVBAは参考書のものをコピーして使い、 基本的に「マクロの記録」で操作を覚えさせて用いているレベルなので 初歩的な質問で申し訳ありません。 詳しい方、エッセンスだけでもご教授ください。 不明点がありましたら補足いたします。

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

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

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

  • エクセルのフィルターオプションで

    エクセル2000です。 A10:D10000位の大きな表があります。1行目(10行)はタイトル行です。 そのうちB列の商品名からA、B,Cの3つの商品、D列の日付から2006/12/01~2006/12/31のものをフィルターオプションで抽出したいのです。 抽出条件を 1行目はタイトル行 B2にA B3にB B4にC とした場合、D2~D4にはどう記述すればいいのでしょうか?

  • エクセルでの各月の決まった日付の抽出方法

    お世話になります。 Excel(エクセル)のフィルタで各月の決まった日付のデータを抽出する際に、表示形式が文字列型の場合は「*」や「?」を使えば抽出できますが、日付の場合はどうすればいいでしょうか? 例)各月「4日」を抽出した結果の場合 2008/2/4 | AAA 2008/1/4 | AAA 2007/7/4 | BBB

専門家に質問してみよう