Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
LOOKUP関数で複数の条件を指定したい
投稿日時: 22/10/05 13:25:53
投稿者: ラングドシャ

たびたびの質問で申し訳ありません。
昨日、https://www.moug.net/faq/viewtopic.php?t=81773 でFINDを使っての
抽出を教えていただきました。
作業内容によって複数で検索する必要があり、追加で教えてほしく再質問です。
よろしくお願いいたします。
 
同じカテゴリの作業の場合、どちらかの作業を直近でいつ行ったかというのを
抽出したいです。
 
下表の場合、「入」と「出」が同じカテゴリの作業となります。
 

	A	B	C	D	E	F
1		9月25日	9月26日	9月27日	9月28日	9月29日
2	社員1	出A	調A	入B		
3	社員2	確A	出A			
4	社員3		確B	入B	出B

 
 
社員1なら、「入」と「出」がありますが、入が直近で9月27日なので9月27日を表示
社員2なら、「出」があるので9月26日
社員3なら、「入」と「出」がありますが、出が9月28日なので9月28日
いずれもABは関係なく抽出したいです。
 
昨日、以下の関数を教えていただきました。
 
=LOOKUP(2,1/ISNUMBER(FIND("入",2:2)),1:1)    
=IFERROR(LOOKUP(2,1/FIND("入",2:2),$1:$1),"")
 
FINDにORが使えないとの事で、調べてみるとIFERRORを重ねるというものがありました。
これは、1つ目のワードが見つからない場合、2つ目を検索といったものらしく
当方ではうまくできませんでした。
上記条件で、うまく抽出する方法はありますでしょうか?

回答
投稿日時: 22/10/05 14:06:00
投稿者: 半平太

「出、入」は単語の左端にあり、且つ他の無関係な文字列に出・入が含まれることがないなら
 
 =IFERROR(AGGREGATE(14,6,FIND({"入";"出"},B2:NC2)*B$1:NC$1,1),"")
 

回答
投稿日時: 22/10/05 14:19:23
投稿者: んなっと

最初の一文字だけ調べる場合、こんな方法も。
 
=IFERROR(LOOKUP(2,1/FIND(LEFT(2:2&"|"),"入出"),$1:$1),"")

回答
投稿日時: 22/10/05 15:33:11
投稿者: y.yusuke

=LOOKUP(2,1/(ISNUMBER(FIND("入",2:2))+ISNUMBER(FIND("出",2:2))),$1:$1)
ORの時は+して上げれば良いです。
ANDの時は*します。

投稿日時: 22/10/05 15:51:54
投稿者: ラングドシャ

ありがとうございました。
ORをどこかに工夫して入れるのかなとか、いろいろ予想はしていましたが
そう言ったレベルの話ではなかったですね。
 
半平太様
検索ワードを範囲で指定し、AGGREGATEの14で指定している大きいほうを
選ぶという感じでしょうか?
{}は苦手意識がありあまり使ったことがありませんでしたが勉強になりました。
ありがとうございました。
 
 
んなっと様
"|" →これはパイプでしょうか?
現時点でパイプがどのように働いているのか全く分かっていませんが、調べてみたいと
思います。昨日の関数から少ししか変わっていないように見えますが働きが全然違いますね。
ありがとうございました。