• ベストアンサー

エクセルの関数で文字列検索

エクセルの関数ですが、指定したある特定のセルの中に「任意」または「フリー」という文字列が無かった場合のみ「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)))) はまったく同じ結果となりますか? 異なる結果が返る場合はありませんか? また、両方とも同じ式の繰り返しを使っていますが、もっと簡単に記述できませんでしょうか?

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

  • ベストアンサー
noname#176215
noname#176215
回答No.4

#3 の者です。 > こうすれば{}の中に検索したい単語リスト?を入れればいいのですか? はい そうです。いくつまで 入れられたかは忘れましたが(いい加減)。 > その場合は式最後の=2はリストの単語数でいいんですか? はい そうです。単語数が増えたら変更して下さい。 > 最後の*1がわかりませんでしたが。 ISERR関数は「#N/A」以外のエラーに対してのチェックを行いますが 返り値は「TRUE」とか「FALSE」になります。このままだと SUM関数で 足し算できないので「*1」とか「+0」とかの四則演算を加えて 数値に してやる必要があります。

joker999
質問者

お礼

ありがとうございました! 仕組みはよくわかりませんが、使い方はよくわかりました。 ありがとうございました。

その他の回答 (3)

noname#176215
noname#176215
回答No.3

=SUM(ISERR(FIND({"フリー","任意"},OFFSET(D48,B49,0)))*1)=2 これで多少は短くなりますか?

joker999
質問者

お礼

ありがとうございます。 これすごいですね! やってみました。{}って使ったことが無かったですが、こうすれば{}の中に検索したい単語リスト?を入れればいいのですか?その場合は式最後の=2はリストの単語数でいいんですか? 最後の*1がわかりませんでしたが。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

前者では文字列の先頭に「任意」または「フリー」がなければならないのに対し、 後者では任意の場所に「任意」または「フリー」があっても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 たいしたアドバイスにならずに申し訳ありません。

joker999
質問者

お礼

あ、そうですね。 Left関数を使ったほうは先頭になければいけませんね! ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

こんにちは、以下のような数式で如何でしょうか。 =IF(OR(COUNTIF(C1:C5,"*フリー*"),(COUNTIF(C1:C5,"*任意*"))),"FALSE","THRU") *は、ワイルドカードで任意文字列を想定しました。 以上

joker999
質問者

お礼

さっそくありがとうございました。