• 締切済み

<ecxel> 大文字、小文字、数字の区別

excelで質問です サイトのアカウント登録などで、パスワードの設定を求められることがあると思います。 例えば、「1111」と入力した場合、「パスワードは半角英数字混合で設定してください」といったニュアンスのポップアップが出てくることがありますよね? これって、excelでも可能なのでしょうか? ある一つのセルに半角英数字の大文字、小文字、数字がそれぞれ1文字以上入っていない場合にエラーを出すためには、どうしたらよいのでしょうか? イメージはこんな感じです。 1111 ⇒ エラー表示 111a ⇒ エラー表示 11aA ⇒ エラー表示しない 今後、メンテナンスが発生する場合のことも考え、VBAマクロ等ではなく、関数や条件付き書式などで対応できたら。と思っているのですが・・・ よい解決方法がございましたら、是非とも伝授いただければと思います。 よろしくお願いします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.3です! たびたびごめんなさい。 Excel2007以前のバージョンでは入力規則の数式に別Sheetは直接範囲指定できないようですので、 前回の画像の別Sheetを名前定義しておて下さい。 前回の画像で説明すると A1~A10セルを範囲指定 → 名前ボックス(画面左上のセル番地が表示されているところ)に 仮に 数字 と入力しEnter これでA1~A10セルが 数字 と名前定義されました。 同様に B1~B26セルを範囲指定 → 小文字 と名前定義 C1~C26セルを範囲指定 → 大文字 と名前定義 (名前定義は好みの名前にしておきます) こうしてデータ → 入力規則 → ユーザー設定 → 数式欄に =AND(OR(ISNUMBER(FIND(数字,A1))),OR(ISNUMBER(FIND(大文字,A1))),OR(ISNUMBER(FIND(小文字,A1)))) としてみてください。 何度も失礼しました。m(_ _)m

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

関数で無理やりやってみました。A1に対象の文字列が入っているとして↓の式が1ならOK、0ならエラーとなります。 =(MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))<=LEN(A1))*(EXACT(A1,UPPER(A1))=FALSE)*(EXACT(A1,LOWER(A1))=FALSE) A1セルには半角しか入力できない様に入力規則を掛けておいた方が良いでしょう。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

分かり易く処理するのなら作業列を作って対応する方法です。 例えばA1セルから下方にお示しのようなデータを入力するとして、B1セルには次の式を入力してE1セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($A1="","",CODE(MID($A1,COLUMN(A1),1))) F1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",IF((IF(COUNTIFS(B1:E1,">=65",B1:E1,"<=95")>0,1,0)+IF(COUNTIFS(B1:E1,">=97",B1:E1,"<=122")>0,1,0)+IF(COUNTIFS(B1:E1,">=48",B1:E1,"<=57")>0,1,0))=3,"OK","NG")) その後にA列を選択して「データ」タブの「データの入力規則」の入力値の種類で「ユーザー設定」を選択し、数式の窓には =F1="OK" と入力してOKします。 最後にB列からF列を選択してから右クリックし「非表示」を選択すればよいでしょう。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 泥臭い方法になりますが・・・ 仮にSheet1のA1セル以降に設定するとします。 ↓の画像のようにSheet2に表を作成しておきます。 (アルファベットは当然26行目までになります) Sheet1のA1セル以降を範囲指定 → データ → データの入力規則 → 「入力値の種類」でユーザー設定を選択 → 数式欄に↓の数式を入れ(Excel2007以降であればこの画面からコピー&ペーストできると思います) Shift+Ctrlキーを押しながらEnterキーで確定! =AND(OR(ISNUMBER(FIND(Sheet2!$A$1:$A$10,A1))),OR(ISNUMBER(FIND(Sheet2!$B$1:$B$26,A1))),OR(ISNUMBER(FIND(Sheet2!$C$1:$C$26,A1)))) エラーメッセージ等は適当に設定(なにも設定しなくても構いません) ※ 数式内のA1部分は入力規則を設定したい範囲の最初のセル番地にします。m(_ _)m

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>半角英数字の大文字、小文字、数字がそれぞれ1文字以上 A1セルについて入力規則のユーザー設定を開始 =NOT(OR(SUMPRODUCT(1*ISERROR(FIND(ROW($A$1:$A$10)-1,A1)))=10,EXACT(A1,UPPER(A1)),EXACT(A1,LOWER(A1)),LEN(A1)<>LENB(A1))) と記入してOK A1をコピーし、所定のセル範囲に貼り付ける。

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.1

関数としては、 Lower、Upperで変化させ、元のデータと,Eactをとれば可能です。

noname#185714
質問者

お礼

早速のご回答ありがとうございます!! 知識があまりに乏しいもので・・・ Lower、Upper、Eact とはそれぞれ関数の名称でしょうか?