- ベストアンサー
EXCEL入力規則で文字数制限
EXCEL2002です。 A列に入力規則をかけ、全角20文字、半角40文字以内にしたいと思っています。 「エクセル技道場→入力規則→全角5文字、半角10文字」を参考にさせていただき、以下の式で入力規則のユーザー設定を行いました。 =AND(ISTEXT(A1),LENB(A1)<=40) この場合、最初の文字が半角の場合に制限数以下でもエラーメッセージが出てしまいます。 最初の文字が全角でも半角でも制限数以下であればエラーメッセージが出ないようにする方法はありますか? よろしくお願いします。 http://www2.odn.ne.jp/excel/waza/validation.html#SEC10
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エクセル技道場の算式、 =AND(ISTEXT(A1),LENB(A1)<=10) は ISTEXT(A1) で、セルA1が文字列か、 LENB(A1) で、セルA1の内容のバイト数 を計算しています。 入力条件は『文字列でその文字列は10バイト以内』です。 ここで(普通に行うと)、 『123』・・・全て半角数値の場合 → ISTEXT(A1) で文字列とはみなされないので入力不可です。 『987』・・・全て全角数値の場合 → 入力確定で、『987』と全て半角数値で登録される。 → ISTEXT(A1) で文字列とはみなされないので入力不可です。 『912』・・・全角数値と半角や全角数値との混在の場合(9のみ全角) → 入力確定で、『912』と全て半角数値で登録される。 → ISTEXT(A1) で文字列とはみなされないので入力不可です。 『9a』や『9\3』・・・半角記号と半角数値の混在の場合 → ISTEXT(A1) で文字列とみなされるので入力可です。 『123』や『987』を入力可にするには、 (方法1)条件を =LENB(A1)<=40 にする。 ・・・・数値は文字列としても処理されます。 (方法2)条件はそのままで、セルの書式を『文字列』にする 方法1か2で対応可能と思います。 方法2は全角数値をその全角のまま表示したいときに有効でしょう。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
どうも質問者のしたいことは、エクセル技道場の場合と違う面があるようです。 そこで、データ-入力規則-ユーザ設定で「数式」を =IF(ISNUMBER(A1),LEN(A1)<=10,AND(ISTEXT(A1),LENB(A1)<=10)) にしました。これでいかがですか。 ただし40文字はテストのためには長いので10文字に変えてます。 数字の場合は10文字以内(これは数値になる。この場合を追加したことになる。) 全角文字だけ5文字内 半角文字だけ10文字内 全角や半角文字+数字は文字列扱い。 半角に全角が混じったり、全角に半角文字が混じっておれば全角は2文字として数える扱い で10字以内と言うルールになるでしょう。
お礼
imogasiさん、 このようにするとちゃんと指定できるのですね。自分でも調べてちゃんと納得できました。 ご回答ありがとうございました。
- osamuy
- ベストアンサー率42% (1231/2878)
セルB1に、=IF(ISTEXT(A1),"!","")を、 セルC1に、=IF((LENB(A1)<=40),"!","") ――と設定して、A1に10と入れてみてください。 多分、B1が!になるんじゃないかと。
- shiga_3
- ベストアンサー率64% (978/1526)
ご質問に書かれてある数式だと、最初の文字が全角・半角に関わらずバイト数が40以下という制限のはずなのですが・・・。(手元のExcel2000では別に問題はありませんでした。あるいは2002のバグなのでしょうか) もしかして、半角で入力したつもりが全角だったということはないでしょうか。もし半角文字が英数であれば一度削除して、入力をかな入力から直接入力にしてもう一度入力しなおしてみても治りませんでしょうか。 具体的にどういう文字列を入力されたのかを補足いただけたら、もしかしたら参考になるかもしれません。
補足
今、調べてみたのですが質問内容にやや不足の点がありました。最初の文字が半角数字の場合に質問内容の症状となります。半角のアルファベットや「\」などの記号、全角文字の場合は問題ありません。 又、全角文字などを入力し、その後で半角数字を最初の文字として入力しようとするとやはりNGです。 PCを再起動したり、新規の他のWorkbookで試してみましたが、同じ症状でした。 ご参考になりましたでしょうか? どうぞよろしくお願いいたします。
お礼
nishi6さん、 おかげさまで「方法1」で希望通りの動作ができました。 過去Logなどで調べている時にnishi6さんご回答によく出会います。結果だけではなく解説付のご回答が多く、理解に役立ちとても助けていただいてます。 これからもよろしくお願いします。