- ベストアンサー
EXCELでカテゴリを自動判別して最後の日付を検索する方法はありますか?
- EXCELのデータ検索(抽出)でわからないことがあるので、皆さんのお知恵を拝借できないでしょうか?
- A列のIDがtop100、mid200、low300で始まるカテゴリごとに、B列の一番後ろの日付を検索したいのですが、効率的な方法はないでしょうか。
- カテゴリごとに一番後ろの日付を含む行を別表に抽出できたらなお助かります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
方法は、No.1の回答と同じですが、式を↓にしてみてください。配列式ですので、確定はShft+Alt+Enterで。 =(B2=MAX(IF(LEFT($A$2:$A$10,6)=LEFT(A2,6),$B$2:$B$10,""))) これで、各カテゴリの最終日付の行にTRUEが入ります。あとは、オートフィルタでC列の値がTRUEの物だけを表示。 なお、同じカテゴリで同一最終日が複数存在している場合は、全て表示されます。
その他の回答 (5)
- rivoisu
- ベストアンサー率36% (97/264)
カテゴリー列を挿入してあげて日付で降順ソート フィルターでカテゴリーを選択すれば最初に一番新しい日付のデータが 表示される。 その後どうしたいのかが良くわかりません。 (カテゴリごとに一番後ろの日付を含む行を別表に抽出出来たらなお助かります) マクロでやるのが手っ取り早いのですが その表はカテゴリー順に並んだほうがいいのか、日付の降順に並んだほうがいいのか カテゴリー、日付のほかの項目(列)も在るのか 示していただければここにVBA(マクロ)を提示できます。
- mu2011
- ベストアンサー率38% (1910/4994)
NO3です。 >そのままコピーすると、#VALUE!のエラーが出てしまいました。 ⇒多分、配列数式になっていないからだと思いますので、数式を貼り付け→shift+ctrl+enterキーを押下で如何でしょうか。
- mt2008
- ベストアンサー率52% (885/1701)
No.2です。訂正を… 誤:確定はShft+Alt+Enterで。 正:確定はShft+Ctrl+Enterで。 失礼しました。
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 カテゴリ内の最新日付という事ならば、以下の数式をお試しください。 尚、配列数式の為、数式入力完了時にshift+ctrl+enterキーを同時押下して下さい。 C2に=MAX((ISNUMBER(FIND(LEFT(A2,6),$A$2:$A$1000)))*($B$2:$B$1000))=B2
お礼
上記の式をそのままコピーすると、#VALUE!のエラーが出てしまいました。 配列関数をいまいち理解してないので自分で検証、修正することもできず、行き詰ってしまいました。 それでも、とにかく勉強になりました。 どうもありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 ファイルIDの先頭6文字をカテゴリ名とします。 (1)空き列(仮にC列として、見出し名に最終フラグとします)のC2に=COUNTIF(A:A,LEFT(A2,6)&"*")=COUNTIF($A$2:A2,LEFT(A2,6)&"*")を設定、下方向にコピー (2)表をオートフィルタで設定し、C列のTRUEを選択すれば各カテゴリの最終行が抽出できますので、これを別シートにコピー
補足
早速のご回答ありがとうございます。 2つのcountifを比較するというのはいいヒントになりましたが、残念ながら今回検索したかったのは「カテゴリの最終行」ではなく、「カテゴリ内の一番最後の日付」なのです。 説明が曖昧で申し訳ありません。 これを実現するためにヒントがいただけるとありがたいです。
お礼
教えていただいた式で機能しました。ありがとうございまいした。 この式は条件付き書式に使用してもちゃんと機能するので、そちらを採用させていただきました(余分な行を追加しないでいいので)。 ただ、配列関数については、まだよく理解できてないのでなぜ機能するのかはおいおい理解していきたいと思います。