формула для проверки только строкового значения в Excel - PullRequest
1 голос
/ 05 января 2011

Я хочу, чтобы пользователь вводил только символы в ячейку Excel. я использовал ISTEXT (значение) в пользовательской формуле Excel, но не могу получить правильный вывод для строки, как hgdashj2132154 пожалуйста, помогите ... спасибо ..

Ответы [ 3 ]

3 голосов
/ 06 января 2011

Требуется немного магии регулярного выражения.Вам нужна пользовательская функция и надстройка регулярного выражения.В представлении «Разработчик» перейдите в раздел «Инструменты | Ссылки» и установите флажок Регулярные выражения Microsoft VBScript 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

Я бы предпочел обойтись без регулярных выражений, всегда есть «Like Loop»:

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
2 голосов
/ 06 января 2011

Smack, я нашел это на своих закладках. По сути, это та же концепция, что и предложение Марка Тибо, но не требует дополнительных ссылок:

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

1 голос
/ 07 января 2011

Подход, основанный исключительно на VBA:

(я отредактировал свой ответ, чтобы использовать функцию Like вместо функции IsNumeric. Теперь допустимы ТОЛЬКО символы от a до z, а не только не числовые символы.)1003 *

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
...