出産前後の痔にはご注意!

エクセルの関数ですが、指定したある特定のセルの中に「任意」または「フリー」という文字列が無かった場合のみ「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))))

はまったく同じ結果となりますか?
異なる結果が返る場合はありませんか?

また、両方とも同じ式の繰り返しを使っていますが、もっと簡単に記述できませんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#3 の者です。



> こうすれば{}の中に検索したい単語リスト?を入れればいいのですか?

はい そうです。いくつまで 入れられたかは忘れましたが(いい加減)。


> その場合は式最後の=2はリストの単語数でいいんですか?

はい そうです。単語数が増えたら変更して下さい。


> 最後の*1がわかりませんでしたが。

ISERR関数は「#N/A」以外のエラーに対してのチェックを行いますが
返り値は「TRUE」とか「FALSE」になります。このままだと SUM関数で
足し算できないので「*1」とか「+0」とかの四則演算を加えて 数値に
してやる必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/02 18:24

=SUM(ISERR(FIND({"フリー","任意"},OFFSET(D48,B49,0)))*1)=2



これで多少は短くなりますか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
これすごいですね!

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

最後の*1がわかりませんでしたが。

お礼日時:2005/03/02 17:23

前者では文字列の先頭に「任意」または「フリー」がなければならないのに対し、


後者では任意の場所に「任意」または「フリー」があっても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

たいしたアドバイスにならずに申し訳ありません。
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2005/03/02 17:18

こんにちは、以下のような数式で如何でしょうか。



=IF(OR(COUNTIF(C1:C5,"*フリー*"),(COUNTIF(C1:C5,"*任意*"))),"FALSE","THRU")

*は、ワイルドカードで任意文字列を想定しました。

以上
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/02 17:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング