- ベストアンサー
エクセルの入力規則で
エクセルの入力規則で半角数字のみ4桁の制限をかけたいのです。 1000以上9999以下とすればできるのですが、そうすると0123とか、頭が0で始まる数字が入りません。VBAを使えば簡単なのですが、今回はブックが.xlsxなので使えません。ご教示ください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> =AND(LEN(A1)=4,ISNUMBER(VALUE(A1))) > これで0000含め問題ないですよね? ばっちりですね。ISNUMBER(VALUE(A1))はまったく考えつきませんでした。 VALUE("0000")が0になってFALSE扱いになっていたのをISNUMBERでTRUEにしたという感じでしょうか。 まさに脱帽です。
その他の回答 (5)
- ゆるまる(@yurumaru3)
- ベストアンサー率0% (0/2)
エクセルの入力規則で半角数字のみ4桁に制限し、頭にゼロが付いている数字も許容したい場合は、標準のデータ入力規則機能では完全には対応できないので少し工夫が必要があります。VBAを使わずに行う方法ですが、カスタムの入力規則を使って正規表現の代替として関数を利用できます↓ 1,セルの範囲を選択 制限をかけたいセルの範囲を選択。 2,データ入力規則を設定 メニューの「データ」タブをクリックして「データの入力規則」を選択。 3,カスタムの数式を使用 「入力値の種類」を「ユーザー設定」にして次の数式を入力。【=AND(ISNUMBER(A1), LEN(TEXT(A1,"0000"))=4)】 ここでA1 は選択しているセルを指すのでセルに応じて調整してください。この数式のチェック項目です↓ ・セルが数値である ・数値をゼロパディングして4桁である 4,エラーメッセージの設定 必要に応じて、「エラーメッセージ」タブでユーザーに表示するメッセージを設定。 、、、 この設定で0123のような先頭にゼロがある4桁の半角数字も許容され、1000以上9999までの数字も受け入れられるはずなので試してみてください!
お礼
ありがとうございます。残念ながら0123を表示させるためにセルを文字列に設定しているため、 =AND(ISNUMBER(A1), LEN(TEXT(A1,"0000"))=4) では、0123や0000は排除されてしまいます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
> VALUE関数でいったん数値化すればいいわけですね はい、VALUE(A1)で数字以外の入力ではエラーになるようにしてABCDみたいな文字列を除外できました。 あと、0000が入力できないことに気が付いたので、もし0000が必要でしたら以下のように変更しておいてください。 =OR(AND(LEN(A1)=4,VALUE(A1)),A1="0000")
お礼
ありがとうございます。先ほどのご回答をもとに以下の入力規則を設定しておりました。 =AND(LEN(A1)=4,ISNUMBER(VALUE(A1))) これで0000含め問題ないですよね?
- kkkkkm
- ベストアンサー率66% (1719/2589)
あとからふと思ったのですが 書式設定のユーザー定義で 0000 にしておいて 入力規則で 整数 次の値以下 9999 としても見た目は0123とかできますが、そいう事でもないですよね。
お礼
はい、見た目ではなく入力データとしての数字が欲しいものですから。ありがとうございます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
セルの書式設定が文字列でしたら 入力規則で ユーザー定義で(A1の場合) =AND(LEN(A1)=4,VALUE(A1)) で試してみてください。
お礼
ありがとうございます。 はい、先頭の0を表示するためにセルの書式設定は文字列です。 そうか、VALUE関数でいったん数値化すればいいわけですね!ありがとうございました。
- NuboChan
- ベストアンサー率47% (785/1650)
エクセルの入力規則を使って、 0000から9999までの4桁の半角数字のみを許可する設定は、少し工夫が必要ですが可能です 対象のセル範囲を選択します。 「データ」タブから「データの入力規則」を選択します。 「設定」タブで、「入力値の種類」を「ユーザー設定」に変更します。 「数式」欄に以下の数式を入力します: =AND(LEN(A1)=4,ISNUMBER(A1),A1>=0,A1<=9999) ※ A1の部分は、実際に設定するセルを参照。 「OK」をクリックして設定を完了します。 この設定により、 文字列の長さが4桁である 数値である 0以上9999以下である この方法では、0000から9999までの全ての4桁の数字(先頭の0を含む)が入力可能になります
お礼
=AND(LEN(A1)=4,ISNUMBER(A1),A1>=0,A1<=9999) やってみましたが、0ではじまる数字は排除されてしまいます。
お礼
ありがとうございます。 では安心して =AND(LEN(A1)=4,ISNUMBER(VALUE(A1))) で行こうと思います。