Excel (一般機能)

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

 
(Windows 11 Home : Excel 2016)
条件付き書式を使って文字に色を付ける
投稿日時: 24/06/14 21:14:49
投稿者: shimoichimabu

8月のカレンダーを作成しました。
8/13、8/14、8/15の文字を条件付き書式を用いて赤色に設定したいです。
A列は日付で、書式設定は m"月"d"日" です。
下記数式を使うと、条件付き書式に配列式は使えませんというエラーメッセージが出ました。
=ISNA(MATCH(TEXT(A1,"m/d"),{"8/13","8/14","8/15"},0))=FALSE
別シートに8/13、8/14、8/15のテーブルを作れば、普通にMATCH関数を使って簡単に解決しますが、今回、向学のために別シート・作業列を使わない方法にトライしてみました。
そこで、
=IF(ISERROR(FIND(TEXT(A1,"m/d"),"8/13,8/14,8/15"))=FALSE
を使うと、8/1の文字列も赤色になります。
これはFIND関数はMATCH関数のように完全一致を設定する機能が無いからだと思います。
でも、
=IF(ISERROR(FIND(TEXT(A1,"mm/dd"),"08/13,08/14,08/15"))=FALSE
にすると、何とか出来たようです。8月以外の月で任意の休日を設定した場合、
この方式でうまくいくかちょっと不安ですが・・・。全ての日付に対して検証していません。
上記の方法でも悪くはないと思いますが、向学のために、他の方法で何かありましたら、ご提言下さい。

回答
投稿日時: 24/06/15 07:46:27
投稿者: んなっと

引用:
=IF(ISERROR(FIND(TEXT(A1,"m/d"),"8/13,8/14,8/15"))=FALSE
を使うと、8/1の文字列も赤色になります。

前後に , をつけるのはどうですか?
=OR(FIND(TEXT(A1,",m/d,"),",8/13,8/14,8/15,"))

回答
投稿日時: 24/06/15 09:44:03
投稿者: んなっと

あと、CHOOSE関数を使って
=MATCH(TEXT(A1,"m/d"),CHOOSE(ROW($1:$50),"8/13","8/14","8/15"),0)
 
$50→ 50個の日付まで対応。

回答
投稿日時: 24/06/15 15:38:44
投稿者: MMYS

shimoichimabu さんの引用:

=IF(ISERROR(FIND(TEXT(A1,"mm/dd"),"08/13,08/14,08/15"))=FALSE

コンピュータは一般的に
・True = ゼロ以外
・False = ゼロ
です。ですから =FALSE と記述して True/Falseを比較するのは無駄です。
 
今回の場合、
・一致  → ゼロ以外
・不一致 → ゼロ
の数値を返せばよいので下記で良いと思います。
 
=IFERROR(FIND(TEXT(B1,"mm/dd"),"08/13,08/14,08/15"),0)
 

回答
投稿日時: 24/06/15 15:44:18
投稿者: んなっと

最初の式 OR が不要でした。
=OR(FIND(TEXT(A1,",m/d,"),",8/13,8/14,8/15,"))
 ↓ これで十分
=FIND(TEXT(A1,",m/d,"),",8/13,8/14,8/15,")

投稿日時: 24/06/15 15:56:58
投稿者: shimoichimabu

んなっとさん、MMYSさん回答ありがとうございます。
 
確かに、ORがなくても問題なかったです。
 
CHOOSE関数をMATCH関数の中に使うことは想像していませんでした。
こうすれば、条件付き書式で使うことができました。
 
>=FALSE と記述して True/Falseを比較するのは無駄です。
MMYSさん、大変勉強になりました。
 
このたび、色々と貴重なご提言頂き、ありがとうございました。