- ベストアンサー
エクセルの関数で文字列検索
エクセルの関数ですが、指定したある特定のセルの中に「任意」または「フリー」という文字列が無かった場合のみ「TRUE」を返してほしいのです。 やってみましたがいまいち自信がもてないので質問しました。 =IF(AND(LEFT(OFFSET(D48,B49,0),2)<>"任意",LEFT(OFFSET(D48,B49,0),3)<>"フリー"),TRUE) と =AND(ISERROR(FIND("フリー",OFFSET(D48,B49,0))),ISERROR(FIND("任意",OFFSET(D48,B49,0)))) はまったく同じ結果となりますか? 異なる結果が返る場合はありませんか? また、両方とも同じ式の繰り返しを使っていますが、もっと簡単に記述できませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#3 の者です。 > こうすれば{}の中に検索したい単語リスト?を入れればいいのですか? はい そうです。いくつまで 入れられたかは忘れましたが(いい加減)。 > その場合は式最後の=2はリストの単語数でいいんですか? はい そうです。単語数が増えたら変更して下さい。 > 最後の*1がわかりませんでしたが。 ISERR関数は「#N/A」以外のエラーに対してのチェックを行いますが 返り値は「TRUE」とか「FALSE」になります。このままだと SUM関数で 足し算できないので「*1」とか「+0」とかの四則演算を加えて 数値に してやる必要があります。
その他の回答 (3)
=SUM(ISERR(FIND({"フリー","任意"},OFFSET(D48,B49,0)))*1)=2 これで多少は短くなりますか?
お礼
ありがとうございます。 これすごいですね! やってみました。{}って使ったことが無かったですが、こうすれば{}の中に検索したい単語リスト?を入れればいいのですか?その場合は式最後の=2はリストの単語数でいいんですか? 最後の*1がわかりませんでしたが。
- matsu_jun
- ベストアンサー率55% (146/265)
前者では文字列の先頭に「任意」または「フリー」がなければならないのに対し、 後者では任意の場所に「任意」または「フリー」があってもFALSEを返します。 試しにある特定のセルに「責任意識」とか、「イーフリート」などを代入してみてください。 なお、簡単に記述できるようになるわけではありませんが、上の2式を以下のように変更すれば、検索したい文字列が増えてもネスト制限を気にすることがない分は便利だと思われます。 (上の式) =(LEFT(OFFSET(D48,B49,0),2)="任意")+(LEFT(OFFSET(D48,B49,0),3)="フリー")=0 (下の式) =ISERROR(FIND("任意",OFFSET(D48,B49,0)))+ISERROR(FIND("フリー",OFFSET(D48,B49,0)))=2 たいしたアドバイスにならずに申し訳ありません。
お礼
あ、そうですね。 Left関数を使ったほうは先頭になければいけませんね! ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
こんにちは、以下のような数式で如何でしょうか。 =IF(OR(COUNTIF(C1:C5,"*フリー*"),(COUNTIF(C1:C5,"*任意*"))),"FALSE","THRU") *は、ワイルドカードで任意文字列を想定しました。 以上
お礼
さっそくありがとうございました。
お礼
ありがとうございました! 仕組みはよくわかりませんが、使い方はよくわかりました。 ありがとうございました。