教えて!gooにおける不適切な投稿への対応について

今エクセルで、表を作っています。
ある行のみ半角数字しか入力できないようにしたいので入力規則「日本語入力オフ」にしたのですがアクティブにすると日本語入力になるだけで日本語入力も可能です。それを常に半角数字のみをいれるようにするにはどうすればいいでしょうか。
 また、電話番号のみ入力を受け付けるという形にしたい時、例えば○○○-○○○ー○○○○と入力するものしか受付ないとする(文字の入力は受け付けない、エラーメッセージが出る)にはどうすればいいでしょうか。入力規則の設定のタブで「ユーザー設定」で###-###-####としたのですがこれでは駄目みたいです。基本的な事が分からないもので、どなたか教えて下さい!!

gooドクター

A 回答 (2件)

まず、入力規則→日本語入力→無効に。


これで半角英数のみの入力になります。

電話番号のみ入力を受け付けたいとのことですが、
入力された文字が電話番号か否かを判定することは無理っぽいです。
(マクロを使えば出来るのかもしれませんが、あいにく私には分かりません)

また、『○○○-○○○-○○○○と入力するものしか受付ない』のも難しそうです。
なぜなら、地域により市外局番・市内局番の桁数が異なり、
そのすべてに柔軟に対応できるようにしなければならないからです。


そこで、
(1)入力形式はハイフン無しの入力
(2)数字のみ入力受付
(3)入力された数値の大きさで市外局番からの電話番号か判定
としてみましょう。

(2)を実現するためには、入力規則→設定→ユーザー設定で数式欄を
   =isnontext(A1) とすればOK。(A1セルに設定する場合)
(3)はユーザー設定で数式欄を
   =and(A1<10000000000,A1>=100000000) とします。
  ※携帯は頭の0を除いて10桁、固定電話は頭の0を除いて9桁です。
   もし国際電話やその他特殊な電話番号を入力するならば
   この条件式は変更する必要があります。

で、(2)と(3)の両方を満たす場合のみ入力を受け付け、
ということで結局、ユーザー設定の数式欄に入力する数式は
=and(isnontext(A1),A1<10000000000,A1>=100000000)


この条件に合わないときはエラーメッセージを出しましょう。
スタイルは『停止』で。
『注意』や『情報』にするとメッセージが出たときに「はい」や「OK」を選択すると
入力された文字がそのまま残ってしまいます。


それと、セルの書式設定→ユーザー定義で
0###########
としておかないと、市外局番の頭の0が表示されません。
(isnontext関数で数字か否かの判定をする関係上、
 入力結果は文字列として扱えず、数値として扱っているため)


※もちろん、この単純な条件式では入力された電話番号が
 ありえない電話番号でもそのまま受け付けてしまいます。
 (例えば09123456789など)

この回答への補足

ありがとうございます、早速やってみました!!
簡単にできると思っていましたが、複雑ですね。単純に考えていましたが、色んなパターンがあるんですね。

また、質問ですが、

1)ユーザー設定の時のみ#の最初を0にしなければいけないのでしょうか。

2)エクセルを使う際によくでる、「#、*、"」を詳しく解説しているWEBページをご存知でしたら、教えていただきたいです。ちなみに#:任意の数字、*:任意の文字でいいのでしょうか。
長々とすみません。

補足日時:2006/06/01 00:27
    • good
    • 0

#1です。



1)ユーザー設定の時のみ#の最初を0にしなければいけないのでしょうか。

これは入力規則とは無関係です。
書式→セル→表示形式→ユーザー定義で設定できる、
「セルの書式設定」の部分です。
表示するデータが文字列ではなく2桁以上の数値の場合、
一番上の桁の0は自動で削除されます。

入力された電話番号(例えば09012345678)を
文字列として扱えば1文字目の0もデータとして保持されますが
今回の場合数値として扱っているのでエクセルは
1番上の桁の0はでーたとして保持せず、
9012345678という数値データとして認識してしまいます。
このままでは1文字目に0が表示できませんので、
0###########と書式設定することで1文字目に0が表示されるようになります。

0の後に#は11個記述してありますが、
これは11桁以下の数値の場合は頭に0を付加する、という書式です。


2)#:任意の数字、*:任意の文字でいいのでしょうか。

上記の通り、#は書式設定で使用しています。
「任意の数字」というのとはちょっと異なり、数値データの場合の書式設定という事になります。
#の数が有効桁数です。
書式設定で#.###として小数を入力してみてください。
#の数を変えて試してみると#の意味がお分かりいただけると思います。

また、*は検索時に(一部の検索文字列を指定する関数でも)使用され、
「ワイルドカード」と呼ばれます。
「任意の文字」というよりも、「任意の文字列」といったほうが的確でしょう。
0文字以上(何文字でも)の全ての文字列を表します。

*ではなく?を使用することもあります。
これは「任意の1文字」を表します。
(例)A1にabc、B1にbc、C1にabbc と入力し、編集→検索で試してみましょう。
検索する文字列:*bc だと3つとも検索に引っかかる
?bc だとA1、C1が検索に引っかかる(B1はbcの前に文字が無いから)
a*c だとA1、C1が引っかかる(aとcの間に何文字あってもOK)

長ったらしく書いてしまったので逆に分かりづらいかもしれませんね (;^_^A
いろいろお試しになってみてください。

あっそうそう、こちらなどはいろいろお試しになる際に
参考になるかもしれません。
http://www2.odn.ne.jp/excel/waza/index.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング