データの入力規則で条件が正しく動作しない理由

このQ&Aのポイント
  • データの入力規則で設定した条件が正しく動作しない理由は、数式の記述方法に問題があります。
  • 最初に使用した数式(OR関数)では、18文字以上かつ36文字以下の文字列を正しいと判断してしまいます。
  • 正しい動作を実現するには、AND関数を使用し、18文字以下かつ36文字以上の文字列を制限する必要があります。
回答を見る
  • ベストアンサー

複数条件の入力規則について

セル内を以下の条件で入力規則を設定しようとしました。 ①全角文字で18文字、半角文字で36文字以上の入力を制限する ②セル内改行を禁止する ①と②は各々個別に制限動作するようにする データの入力規則で、入力値の種類を「ユーザー設定」にし、数式を 「=OR(LENB(A1)<=36,COUNTIF(A1,"*"&CHAR(10)&"*")=0)」と設定したところ、 ①全角文字で18文字、半角文字で36文字以上の文字列が入力出来てしまう ②全角文字で18文字、半角文字で36文字以内でセル内改行が出来てしまう ③全角文字で18文字、半角文字で36文字以上でセル内改行が禁止される というように、私の意図した通りの制限動作になりませんでした。 重いあぐねて、数式を 「=AND(LENB(A1)<=36,COUNTIF(A1,"*"&CHAR(10)&"*")=0)」と設定したら、 正常に動作しました。 これでは、私の知識では、「OR」と「AND」の使い方が真逆になっているとしか思えません。 この浅薄な私の勘違いを明瞭に説明いただける方がいらっしゃれば、ご教授よろしくお願いたします。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

①の条件は =LENB(A1)<36 です。 ②の条件は =COUNTIF(A1,"*"&CHAR(10)&"*")=0 で良いでしょう。 ③の条件は =AND(①,②) でなければなりません。 論理演算の結果の TRUE を数値化すると 1 になり、 FALSE を数値化すると 0 になります。 OR関数は加算と等価で、AND関数は乗算と等価になります。 IF関数の論理式を複数の論理式を加算するとOR関数の結果と等価で乗算するとAND関数と等価です。 >①全角文字で18文字、半角文字で36文字以上の文字列が入力出来てしまう OR(LENB(A1)<=36,COUNTIF(A1,"*"&CHAR(10)&"*")=0) → OR(FALSE,TRUE) → TRUE             ↓ 等価 (LENB(A1)<=36)+(COUNTIF(A1,"*"&CHAR(10)&"*")=0) → 1+0 → 1 (演算結果が0以外なのでTRUE) >②全角文字で18文字、半角文字で36文字以内でセル内改行が出来てしまう ①と同じ理由で演算結果はTRUEになります。(左右の項の結果が反転しているだけです)   >③全角文字で18文字、半角文字で36文字以上でセル内改行が禁止される OR(LENB(A1)<=36,COUNTIF(A1,"*"&CHAR(10)&"*")=0) → OR(FALSE,FALSE) → FALSE             ↓ 等価 (LENB(A1)<=36)+(COUNTIF(A1,"*"&CHAR(10)&"*")=0) → 0+0 → 0 (演算結果が0なのでFALSE) OR関数をAND関数に置き換えたときの状態をご自身で確認してください。 OR=加算、AND=乗算を忘れず。

abukuma06
質問者

お礼

私が希望しておりました通りの明瞭・的確なご返答、ありがとうございます。 私の頭の中のもやもやとした霧がすっかり晴れました。 拙い質問にも関わらずご丁寧に説明していただき、感謝申し上げます。

その他の回答 (1)

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.1

①の条件、 》 全角文字で18文字、半角文字で36文字以上の入力を制限する の意味は、入力文字数は全角18(半角36)文字未満を許可するでしょ? YESなら、「LENB(A1)<=36」は「LENB(A1)<36」とすべきです。 》 ①と②は各々個別に制限動作するようにする それホントですか?YESなら、 文字数が少なけりゃ、セル内改行があっても構わない、 セル内改行がなけりゃ、文字数が多くても構わない、 になりますよ! ①と②はORでなく、ANDでなきゃアカンのとチャイますか?

関連するQ&A

  • Excel:関数と入力規則

    セル[A2]に入力規則>設定タブ>入力値の種類で「ユーザー設定」、数式に「=LENB(A2)<=16」 と設定しています。 この設定によりこのセルには全角8文字もしくは半角16文字を超えての入力を禁止させています。 その隣のセル[B2]にはセル[A2]の入力値がそのまま自動表示されるように「=A2」とし、かつ入力規則>設定タブ>入力値の種類で「ユーザー設定」、数式に「=LENB(A2)<=12」 と設定しています。 この設定によりこのセルには全角6文字もしくは半角12文字を超えての入力を禁止させています。 例えば、セル[A2]への入力文字が全角6文字以内であれば問題ないのですが、8文字になった場合、セル[B2]の入力規則が無視され、8文字で表示されてしまうのです。 これは仕方がないのでしょうか? ちなみにセル[B2]の関数を無視して直接セル[B2]に入力するのは入力規則が正常に反応し、全角7文字以上は入力できません。 何か良い方法があれば御教示願います。

  • EXCEL入力規則で文字数制限

    EXCEL2002です。 A列に入力規則をかけ、全角20文字、半角40文字以内にしたいと思っています。 「エクセル技道場→入力規則→全角5文字、半角10文字」を参考にさせていただき、以下の式で入力規則のユーザー設定を行いました。 =AND(ISTEXT(A1),LENB(A1)<=40) この場合、最初の文字が半角の場合に制限数以下でもエラーメッセージが出てしまいます。 最初の文字が全角でも半角でも制限数以下であればエラーメッセージが出ないようにする方法はありますか? よろしくお願いします。 http://www2.odn.ne.jp/excel/waza/validation.html#SEC10

  • エクセルでセルに入力制限をしたいのですが。

    例えばA1のセルには全角で10文字まで、B1のセルには半角カナで10文字までという入力制限ができるでしょうか?入力規則で設定したところ、文字数制限はできるのですが、半角,全角の区別をしてくれません。 よろしくお願いします。

  • Excel:セルへの入力規則

    Excel2003です。 [データ]→[入力規則]→[設定]で入力値の種類を「ユーザー設定」にし、数式に「=LENB(E3)<=16」 さらに [データ]→[入力規則]→[日本語入力]でIME 日本語入力を半角カタカナに設定し、半角カタカナ という設定でE3セルを半角カタカナで16文字以内に制約させています。 しかし、この設定ですと確かに文字種は半角カタカナになりますが、文字種を変更することも出来てしまいます。 これを半角カタカナ以外は入力禁止にすることは出来ないのでしょうか?同時に半角カタカナ16文字以内、という制約付です。 よろしくお願いします。

  • エクセル 入力規則設定方法

    全角のみで25文字以内の設定を行いたいと思っておりますが、 A1のセルに下記の入力規則設定を行った場合 [ユーザー設定]⇒.[数式] =AND(A1=JIS(A1),LEN(A1)<=25) 先頭からいくつか数字(全角でも)のみが並ぶとエラーになってしまいます。 また、 [文字列長さ]⇒.[最大値] 25以下 この場合も、数字のみですといくらでも入力が可能であり、しかも16番目の数字が0(ゼロ)に 変化してしまいました。 どこか、何かの設定方法が悪いと思うのですが、 本来設定したい内容としては、 ●そのA1セルに、半角英数字を入力しても全角に変換し、文字数としてカウントする。 ●上記のように、数字のみが10個並んだとしても許可して全角文字に変化させる。 これを設定したいのです。 どうか教授いただけないでしょうか。 宜しくお願いします。

  • Excelの入力規則 バイト数で指定2

    http://oshiete1.goo.ne.jp/qa3332783.html で質問した者です。 よく分からないまま質問を締め切ってしまったので、もう一度質問させてください。 > 「ユーザー設定」 > 数式に > =LENB(B4)<=10 とすることでB4セルをバイト数で制限かけることが出来る事はわかったのですが、列全体で指定するとき、列を選んで入力規則からユーザ設定するところで、=LENB(*) <=10の「*」のところは何と書けばよいでしょうか? 度々すみませんが宜しくお願いします。

  • 半角のみの入力制限

    使用しているのはExcel2003です。 セルの表示形式は文字列のまま、1つのセルに半角のみ入力制限をyyyy/mm/dd hh:mm:ssでかけたいのですが、入力規則で制限できる方法ありますでしょうか? 全角の空白、時間の『:』を全角『:』で入力してくる人もいるので、上記表示以外受け付けできないようにしたいです。 数式を組めば簡単に解決しますが、そのEXCELをそのままCSV変換しインポートするため 数式だとエラーではじかれるので、それもできません。 入力規則は問題ないので色々調べつくして、トライしてみた入力規則が、 文字列、次の値に等しい、19(yyyy/mm/dd hh:mm:ss 19文字)、エラーメッセージ(念のための)、日本語入力オフです。 ただ、全角半角までは区別してくれないので、それをどうしたらいいのか・・・ よろしくお願いします。

  • エクセルで1行に入力文字数制限と自動改行

    エクセルにて入力フォームを作成しているのですが、1行に対する入力文字数の制限とそれをオーバーした場合に自動で改行するマクロを知りたいです。 例えばA1セルに30文字で入力制限しそれ以上の入力があれば自動でA2セルに改行するというようなものです。 入力フォームなので複数行にわたってしまうため、A1セルのみではなくその下のA2セルA3セル...と複数の指定セルで同じ作業をさせたいです。 入力する際は全角半角が混在してしまうので、合わせて30文字ではなく半角は0.5文字というようにしたいです。 またセルは結合して作成しているのでJustifyは使えませんでした。使えたら楽だったんですが。それとも使い方間違えたかな。。。 いろいろと探してみたのですが、ちょうど自分の作りたいものに合うものが調べられず質問しました。 ご教授いただけると助かります。

  • エクセル入力規則で関数を使ってエラーを表示させたい

    エクセル2003を使用しています。 入力規則の条件設定でユーザー設定を選び、関数を使用して、 E5のセルに「A」、もしくは、「B」で始まるデータを入力したときに、 エラーメッセージを表示させたいのですが、 うまくエラーメッセージを表示させることができません。 COUNTIF関数を使って =OR(COUNTIF(E5,"A*"),COUNTIF(E5,"B*")) と数式に入れてみたのですが、うまくいきませんでした。 どなたかご教示いただければありがたいです。よろしくお願いします。

  • Excel 半角で入力しているのに、セルの中では全角表示に‥‥

    Excel2000です。 A1のセルに、6月6日と入力しました。 数字は、半角で入力しました。 数式バーをみると、ちゃんと6は半角で表示してあるのに、A1のセルを見ると、6月6日と、全角表示になってしまっています。 これはどんな現象なのでしょうか? あと、範囲の狭いセルの中に00-0000と、電話番号を入力したら、「-」から先が改行されていました。 改行させない方法はあるのでしょうか? 教えてください。

専門家に質問してみよう