- ベストアンサー
エクセルでの入力規則について
- エクセルで商品管理表を作成しているが、データ入力が不特定多数の人で行われるため入力規則を設定したい。具体的な規則は、7桁の半角英数字で重複不可の範囲0000001から9999999までで、全角・半角スペースの入力は不可。
- エクセルでの商品管理表作成時に、不特定多数の人がデータ入力をするため入力規則を設定したい。具体的には、7桁の半角英数字で、0000001から9999999の範囲で重複不可であり、全角・半角スペースの入力は不可とする。
- エクセルを使用して商品管理表を作成中。データ入力が不特定多数の人によって行われるため、入力規則を設定したい。具体的な規則は、7桁の半角英数字で、0000001から9999999の範囲で重複不可であり、全角・半角スペースの入力は不可とする。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
はて? ○7桁の半角の数字。ただし0000000は除く ○1セルの中の重複数字は別にOKで、B8からI41の範囲で重複したらダメ ○スペースに限らず英字記号も不可、全角文字も不可 と言いたかったのでしょうか。 手順: B8セルを選択 セルの書式設定の表示形式を文字列に設定 入力規則を開始 種類をユーザー設定 数式欄に =ISNUMBER(B8*1)*(B8-0)*(LENB(B8)=7)*(COUNTIF($B$8:$I$41,B8)=1) と記入してOK B8をコピー、B8:I41に貼り付けて完成。 #操作に慣れたらB8:I41を最初から選択して操作しても勿論OK。 #参考 「7文字の数字」の制約の必要性についてよく考えて、たとえばセルの書式設定の表示形式のユーザー定義で 0000000 を設定しておき、最大7桁までの「数値」(たとえば1や10)を記入するような仕込みをする事もできます 実際に手を動かして操作してみて、必要性についてご自分のホントにやらなきゃならない事に照らして判断してください。
その他の回答 (1)
- tsubuyuki
- ベストアンサー率45% (699/1545)
一気に行くとわかりづらいので、一つ一つやっつけていきましょう。 まず、簡単なところから > 重複不可 =COUNTIF($B$2:$I$41,B2)<=1 これで、範囲内にその値が「1以下」つまり、1か0しか認めない=重複しないとできます。 > 全角、半角スペースの入力不可 これもちょっと捻りますが難しくないです。 =ISERROR(FIND(" ",ASC(B2))) B2をASC関数で半角にし、FIND関数でスペースを探してやり、 ISERROR関数でエラー値が返ってくるかどうか調べています。 ちなみに、FIND関数は第2引数(検索値)が含まれていないをとエラーで返ります。 なので、ISERROR関数に渡して、FALSEが返ってきたら 「スペース(全/半問わず)」を含んでいる、と言うことです。 > 入力文字数7桁 これも難しくないですね。 =LEN(B2)=7 つまり「文字列長=7文字固定」の意味です。 と、ここまでは良いのですが。 問題は、質問文中のちょっとした矛盾点。 > 半角英数字固定 > 0000001から9999999の間で これです。 前者を活かすなら、アルファベットOK。 後者を活かすなら、アルファベットNGで数字のみ。 後者なら、 =AND(B2>=1,B2<=9999999) でいけるんですが、前者ならもう少し力任せにやってやる必要がありますね。 ちなみに全角が混ざっていないかどうか?は =LEN(B2)=LENB(B2) で調べられます。 ま、踏まえて、あとは全てをAND関数で括ってやればOK。 つまり、「アルファベット込」なら =AND(COUNTIF($B$2:$I$41,B2)<=1,ISERROR(FIND(" ",ASC(B2))),LEN(B2)=7,LEN(B2)=LENB(B2)) なのですが、「数字だけ」ならちょっと端折ることも可能です。 =AND(COUNTIF($B$2:$I$41,B2)<=1,AND(B2>=1,B2<=9999999)) これだけで、たぶん出来ます。 この場合は、表示形式を「0000000」に設定してやるのをお忘れなく。
お礼
回答ありがとうございます! とても参考になりました。 本当はお二方ともベストアンサーに選ばせてもらいたいのですが、今回はNo2さんを選ばせて頂きました。 自分ももっとエクセルについて再度勉強してみたいと思います。 本当にありがとうございました。
補足
迅速な回答ありがとうございます。 とても解りやすかったです。 教えて頂いた式を設定したら解決しました。ありがとうございました。 ついでと言っては何ですが、この入力規則を生かしたまま左上に自動で文字が列移動されるような設定も可能なのでしょうか。 例えば、下記のような図1データがあるとします。そこでA1のデータを消すと図2のような状態に自動で詰めて常に空白セルを最後尾に表示させることは出来るのでしょうか。 A B C 1 01 02 03 2 04 05 06 3 07 08 09 ↑図1 A B C 1 02 03 04 2 05 06 07 3 08 09 ↑図2 設定セル範囲はB8からE41とF8からI41の二か所を考えています。 説明下手で伝わりにくいとは思いますが、回答いただけると幸いです。 よろしくお願いします。