1

ユーザーにExcelセルに文字のみを入力してもらいたい。Excelのカスタム数式でISTEXT(value)を使用したが、 hgdashj2132154のような文字列の正しい出力を取得できない 。助けてください...ありがとうございます。

4

3 に答える 3

3

少し正規表現の魔法が必要です。ユーザー定義関数と正規表現アドインが必要です。開発者ビューで、[ツール]、[参照]の順に移動し、[MicrosoftVBScript正規表現5.5]にチェックマークを付けます。

関数は次のとおりです。

Public Function isOnlyAlpha(myText) As Boolean
   Dim regEx
   Set regEx = New RegExp   'Regular expression object
   regEx.Pattern = "^[a-zA-Z]*$"  ' Set pattern.
   isOnlyAlpha = regEx.Test(myText)   ' Test for match
End Function

結果:

=isOnlyAlpha("hgdashj2132154")
False

=isOnlyAlpha("hgdashj")
True

正規表現なしで実行したい場合は、常に「LikeLoop」があります。

Public Function IsOnlyAlpha(Value As String) As Boolean
    IsOnlyAlpha = True
    Dim i As Integer
    For i = 1 To Len(Value)
        IsOnlyAlpha = IsOnlyAlpha And (Mid(Value, i, 1) Like "[A-Za-z]")
    Next i
End Function
于 2011-01-06T01:55:05.020 に答える
2

スマック、ブックマークしたサイトでこれを見つけました。これは基本的にMarcThibaultの提案と同じ概念ですが、追加の参照は必要ありません。

http://www.techonthenet.com/excel/formulas/alphanumeric.php

于 2011-01-06T13:57:58.723 に答える
1

純粋なVBAアプローチ:

(IsNumeric関数の代わりにLike演算子を使用するように回答を編集しました。現在、数字以外の文字だけでなく、文字aからzのみが有効と見なされます。)

Public Function IsOnlyAlpha(Value As String) As Boolean

If Len(Value) = 0 Then

    IsOnlyAlpha = False
    Exit Function

End If

Dim i As Integer
For i = 1 To Len(Value)

    If Not Mid(Value, i, 1) Like "[A-Za-z]" Then

        IsOnlyAlpha = False
        Exit Function

    End If

Next i

IsOnlyAlpha = True

End Function
于 2011-01-07T01:16:34.893 に答える