[[20160418112141]] 『大文字・小文字・記号・数字』(ムサコ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『大文字・小文字・記号・数字』(ムサコ)

お世話になります。

大文字・小文字・記号・数字 のうち、いずれか3つが含まれていれば○、
含まれていなければ×

test1234  ×
Test1234 ○

といった事はできますでしょうか。

< 使用 Excel:Excel2010、使用 OS:unknown >


 交通整理だけ。

 文字はすべて半角ですか?
 半角カタカナ なんてのはあるのでしょうか?
 で、記号 という定義は? 数字とアルファベット以外でいいのですか?
(β) 2016/04/18(月) 11:30

 4つ含まれるとどーなんの?
 
(GobGob) 2016/04/18(月) 11:33

交通整理ありがとうございます。

文字はすべて半角です。
半角カタカナはありません。

記号は↓のみです

@ # $ % ^ & * - _  + = [ ] { } | \ : ‘ , . ? / ` ~ “ ( ) ;

4つ含まれた場合はOKです。

宜しくお願いいたします。
(ムサコ) 2016/04/18(月) 17:21


 純粋関数案は、専門家さんにお任せし、場つなぎで UDF です。

 標準モジュールに記述し、セル側は =IF(CheckStr(A1)>=3,"○","×") といった感じで。

 Function CheckStr(s As String) As Long
    With CreateObject("VBScript.RegExp")
        .Pattern = "[0-9]"
        If .Test(s) Then CheckStr = CheckStr + 1
        .Pattern = "[a-z]"
        If .Test(s) Then CheckStr = CheckStr + 1
        .Pattern = "[A-Z]"
        If .Test(s) Then CheckStr = CheckStr + 1
        .Pattern = "[-@#\$%\^&\*_\?\+=\[\]\{\}\|\\:',\./`~""\(\);]"
        If .Test(s) Then CheckStr = CheckStr + 1
    End With
 End Function

(β) 2016/04/18(月) 18:57


 UDF
 セルに
 =CheckChar(A1)

 Function CheckChar(txt As String) As Boolean
    CheckChar = (txt Like "*[A-Z]*") + (txt Like "*[a-z]*") + (txt Like "*[0-9]*") + _
    IIf(((txt Like "*[@#$%^&*_?+={}|\:‘,.?/`~""();[[-]*") + (txt Like "*[]]*")), -1, 0) <= -3
End Function
(seiya) 2016/04/18(月) 19:10
 チョイ修正 19:25

 ためしに関数で作ってみたが私の発想力ではユーザー定義関数のほうがよさそうだという結果に。

 =IF((SUM(EXACT(UPPER(MID(A1,ROW($1:$50),1)),MID(A1,ROW($1:$50),1))*(MID(A1,ROW($1:$50),1)<>"")*ISERROR(MID(A1,ROW($1:$50),1)*1))>0)
    +(SUM(EXACT(LOWER(MID(A1,ROW($1:$50),1)),MID(A1,ROW($1:$50),1))*(MID(A1,ROW($1:$50),1)<>"")*ISERROR(MID(A1,ROW($1:$50),1)*1))>0)
    +(SUM(IFERROR(MID(A1,ROW($1:$50),1)*1,0))>0)+(SUM(EXACT(MID(A1,ROW($1:$50),1),{"@","#","$","%","^","&","*","-","_"," ","+","=","[","]","{","}","|","\",":","'",",",".","?","/","`","~","""","(",")",";"})*1)>0)>2,"○","×")
 この式の入力時にはShiftキーとCtrlキーを押しながらEnterキーで式を確定してくれ。
 (確定後、式が{}で囲まれればOK)

 なお、記号部分は「‘」が全角だったり(式では「'」にしている)「_」の次も全角文字?(式では半角スペースにしている)
 だったりなのでムサコさんのほうで実際に判断したい記号をチェックしてその記号にしてくれ。
 なお、「"」は式にもあるが「"""」ではなく「""""」としてくれ。
 (""の中では「""」と「"」二文字を重ねることで「"」一文字を表すため)

 あと、式では元の文字列の最大長を50文字としている。
 もっと短い場合、長い場合は式中の「$50」部分をすべて同じ値で変更してくれ。
(ねむねむ) 2016/04/19(火) 09:57

 =IF((COUNT(FIND(ROW($1:$10)-1,A1))>0)+(COUNT(FIND(CHAR(ROW($65:$90)),A1))>0)+(COUNT(FIND(CHAR(ROW($97:$122)),A1))>0)+(COUNT(FIND(MID("@#$%^&*-_+=[]{}|\:‘,.?/`~“();",ROW($1:$30),1),A1))>0)>2,"OK","NG")

 CTRL+SHIFT+ENTER
 
(GobGob) 2016/04/19(火) 10:26

 そうか、FIND関数は大文字・小文字を区別できたか。

 あと、
 >文字はすべて半角です。
 とあるので「“」も「"」ではないかと思うが。

 文字は半角だが記号は全角もあるということかもしれないが。
(ねむねむ) 2016/04/19(火) 10:38

 GobGobさん案から、数字と文字コード判定部分を採用。CTRL+SHIFT+ENTERで確定。

=IF(IF(ISERROR(FIND($A1,LOWER($A1))),1,0)+IF(ISERROR(FIND($A1,UPPER($A1))),1,0)+IF(COUNT(FIND(ROW($1:$10)-1,$A1))>0,1,0)+IF(COUNT(FIND(CHAR(ROW($34:$47)),$A1))+COUNT(FIND(CHAR(ROW($58:$64)),$A1))+COUNT(FIND(CHAR(ROW($91:$96)),$A1))+COUNT(FIND(CHAR(ROW($123:$126)),$A1))>0,1,0)>2,"○","×")
(???) 2016/04/19(火) 13:31


みなさま

ありがとうございました。

ねむねむさんのを参考に作成完了しました。

VBAについても勉強し活用できるようにします。

また、宜しくお願いします。
(ムサコ) 2016/04/20(水) 14:40


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.