Я хочу, чтобы пользователь вводил только символы в ячейку Excel. Я использовал ISTEXT(значение) в пользовательской формуле Excel, но не могу получить правильный вывод для строки, например hgdashj2132154, пожалуйста, помогите ... Спасибо..
формула для проверки только строкового значения в excel
Ответы (3)
Smack, я нашел это на своих сайтах в закладках. По сути, это та же концепция, что и предложение Марка Тибо, но не требующая дополнительных ссылок:
http://www.techonthenet.com/excel/formulas/alphanumeric.php
Просто нужно немного магии регулярных выражений. Вам нужна определяемая пользователем функция и надстройка регулярного выражения. В представлении «Разработчик» перейдите в «Инструменты|Ссылки» и отметьте «Регулярные выражения 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
Чистый подход VBA:
(Я отредактировал свой ответ, чтобы использовать оператор Like вместо функции IsNumeric. Теперь действительными считаются ТОЛЬКО символы от 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