• ベストアンサー

Excel:関数と入力規則

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

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

B2に手入力するわけではないので、B2の入力規則は不要。 で、B2に次の式を入れる   =LEFTB(A2,12) 要するにA2の文字列から12文字(半角)以内を取出す。 外しましたらご容赦!  

Youyou
質問者

お礼

ありがとうございます。 全然外してないです。

その他の回答 (1)

  • banshibo
  • ベストアンサー率53% (7/13)
回答No.1

あくまで入力規則は、そのセルに値が入力された時にチェックするものです。 つまり値を参照で表示するようにしているだけでは、入力規則には触れないのです。(入力されているのはA2ですから。) これはExcelの仕様です。 どうしてもというのであれば、B2の入力規則は外してしまって、 その上で、B2に↓のように入力してはどうでしょうか? =IF(A2="","",IF(LENB(A2)<=12,A2,"A列の文字数が12byteを超えています。修正してください。")) これは次のように挙動します。 (1) A2に何も入力されていない場合、B2には何も表示されません。 (2) A2に何か入力されていて、12byte以下の場合、B2にはA2が表示されます。 (3) A2に何か入力されていて、12byteより大きい場合、B2には「A列の文字数が12byteを超えています。修正してください。」と表示されます。 これでどうでしょうか?

Youyou
質問者

お礼

ありがとうございます。 勉強になりました。

関連するQ&A