- ベストアンサー
エクセル入力規則で関数を使ってエラーを表示させたい
エクセル2003を使用しています。 入力規則の条件設定でユーザー設定を選び、関数を使用して、 E5のセルに「A」、もしくは、「B」で始まるデータを入力したときに、 エラーメッセージを表示させたいのですが、 うまくエラーメッセージを表示させることができません。 COUNTIF関数を使って =OR(COUNTIF(E5,"A*"),COUNTIF(E5,"B*")) と数式に入れてみたのですが、うまくいきませんでした。 どなたかご教示いただければありがたいです。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
COUNTIFを使用する方法で、行うのでしたら =COUNTIF(E5,"A*")+COUNTIF(E5,"B*")=0 等の様になります。(「COUNTIF(E5,"A*")+COUNTIF(E5,"B*")」の部分を( )で加工必要はありません) ですが、「A」又は「B」で始まるデータを入力した場合にエラーメッセージを表示させるのでしたら、先頭の文字を取り出して、その文字が「A」及び「B」のどちらでもない場合にのみ入力を許可し、それ以外の場合にはを表示させる、というのが基本だと思います。 ですから、最も基本的な数式は、 =AND(LEFT(E5,1)<>"A",LEFT(E5,1)<>"B") になると思います。 又、大文字の「A」や「B」で始まる場合にはエラーメッセージを表示し、小文字の「a」や「b」で始まる場合には入力を許可するのでしたら、 =NOT(OR(EXACT(LEFT(E5,1),"A"),EXACT(LEFT(E5,1),"B"))) が最も基本的数式となりますが、その他にも、次の様な数式でも同様の事が出来ます。 =ISERROR(FIND(LEFT(E5,1),"AB")) それから、もし、先頭の文字が半角の「A」や「B」となっている時だけではなく、全角の「A」や「B」となっている時にも、エラーメッセージを表示させる場合には、上記の数式の中の「E5」の部分を、全て「ASC(E5)」に置き換えた数式とすれば良いと思います。
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
参考までに。 元の数式はE5のセルに「A」、もしくは、「B」で始まるデータを入力したときにTRUEを返す式になっていますので、その数式を利用するなら、以下のように式全体を否定するNOTで関数を囲むのがわかりよいかもしれません。 =NOT(OR(COUNTIF(E5,"A*"),COUNTIF(E5,"B*"))) もっと直観的な数式にするなら、E5セルの左1文字がAまたはBの場合以外の数式にする手もあります。 =NOT(OR(LEFT(E5,1)={"A","B"})) ただし、上記の数式は大文字と小文字を区別しませんので、小文字のaやbで始まる場合も入力規則の対象になってしまいます。 これを避け大文字と小文字を区別する場合には(Bsは入力できないがbsは入力できるようにしたい場合)、たとえば以下のような数式を入力することになります。 =SUMPRODUCT(EXACT(LEFT(E5,1),{"A","B"})*1)=0
お礼
回答ありがとうございました! 考え方で色々な数式で対応できるのですね。 とても勉強になりました。
- mshr1962
- ベストアンサー率39% (7417/18945)
設定が逆だと思いますが =OR(COUNTIF(E5,"A*"),COUNTIF(E5,"B*")) だと、AまたはBで始まる場合TRUEでOK、AまたはB以外で始まる場合FALSEでエラーになります。 =NOT(OR(COUNTIF(E5,"A*"),COUNTIF(E5,"B*"))) または =OR(COUNTIF(E5,"A*")=0,COUNTIF(E5,"B*")=0) または =(COUNTIF(E5,"A*")+COUNTIF(E5,"B*"))=0
=OR(E5="A*",E5="B*") としてみたら如何?
- MackyNo1
- ベストアンサー率53% (1521/2850)
提示された数式は、先頭がAまたはBの時「TRUE」を返します。 数式を使った入力規則は、以下の数式のように入力できる値の場合に「TRUE」を返す式にしなければなりません。 =(COUNTIF(E5,"A*")+COUNTIF(E5,"B*"))=0
お礼
回答ありがとうございました! 色々なやり方があるのですね。 おかげさまで解決出来ました。