[[20190618100813]] 『表の中から特定文字列が含まれる行の最新データを』(りけ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『表の中から特定文字列が含まれる行の最新データを抽出』(りけ)

上手く説明できるか不安ですが、宜しくお願い致します。

A列に日付、B列に文字列(例:「りんご、みかん、いちご…」などのランダムな組み合わせ)が配置された表があります。
そしてC1セルで指定した文字列(例:「りんご」)を元に、D1セルに上記表から指定文字列が含まれている行の内、最も新しい日付を抽出したいのです。
※日付は必ずしも昇順・降順になっているわけではありません

例えば
・2行目が A2「2019/1/10」 B3「りんご、いちご」
・3行目が A3「2019/2/10」 B3「みかん」
・4行目が A4「2019/3/10」 B4「りんご、みかん」
・5行目が A5「2019/4/10」 B3「いちご」

となっていた場合、C1に「りんご」と指定すればD1は「2019/3/10」
C1に「いちご」と指定すればD1は「2019/4/10」と表示されるようになるように
といった具合です。

DMAX?やMATCH?などかなと、拙い知識で試行錯誤してみたのですが
上手く組み合わせることが出来ませんでした。
どなたかご教授頂けますでしょうか。
宜しくお願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 =IFERROR(IF(C1="","",INDEX(A$2:A$100,MATCH(1,INDEX(0/(FIND("、"&C1&"、","、"&B$2:B$100&"、")),0),1))),"")
 ではどうだろうか?
 上記式では元データが最大100行目まである場合に対応している。
 もっと行がある場合は2か所の$100を大きくしてくれ。
(ねむねむ) 2019/06/18(火) 10:41

 日付は昇順じゃないんですよね?

 A列の日付が数式の結果ではない(数式で空白にしていない)という前提で

 =IF(C1="","",MAX(INDEX(ISNUMBER(FIND("、"&C1&"、","、"&B2:B100&"、"))*A2:A100,0)))

 表示形式「日付」
 または表示形式〜ユーザー定義 yyyy/m/d;;  ← 該当するものがない場合、何も表示されない

 範囲は実際の表に合わせてください。

 参考まで
(笑) 2019/06/18(火) 10:50

 すまない。
 >※日付は必ずしも昇順・降順になっているわけではありません 
 を見落としていた。
 私の式は該当する文字のある一番下を探すものなので無視して笑さんの式を参考にしてくれ。

(ねむねむ) 2019/06/18(火) 11:02


ねむねむさん、笑さん

迅速なご回答ありがとうございます!
ねむねむさんの数式を参考にしたところ、おおむね理想通りの動作が確認できました!
ただ昇順降順の問題があったので笑さんの数式でやり直します(笑)

ただ私の最初の説明が悪かったのですが、実際のデータでは入力された文字列が「りんご、いちご」ではなく
「"りんご""いちご"」となっているので、ちょっと上手く抽出できませんでした(汗)
これは「いちご」と「へびいちご」があった場合に、「いちご」で抽出した際に誤検出を防ぐ為だったのですが、"(半角ダブルコーテーション)は文字列の区切り方としては良くないですよね…

データを修正し入力ルールを改めるか、関数を工夫するか、思案中です。。。
(りけ) 2019/06/18(火) 11:10


 >「"りんご""いちご"」
 これであれば笑さんの式を
 =IF(C1="","",MAX(INDEX(ISNUMBER(FIND(""""&C1&"""",B2:B100))*A2:A100,0))) 
 としてみてくれ。

(ねむねむ) 2019/06/18(火) 11:18


ねむねむさん、笑さん

完璧に動作いたしました!
重ねてお礼申し上げます。ありがとうございました。
(りけ) 2019/06/18(火) 12:20


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.