формула для проверки только строкового значения в excel

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


person Smack    schedule 05.01.2011    source источник
comment
Какой результат вы ожидаете от hgdashj2132154? Иными словами, какую ошибку вы получаете?   -  person Alex P    schedule 05.01.2011
comment
Это просто пользовательская проверка excel, я хочу пользовательскую формулу для excel, которая принимает только строку (только символы)...   -  person Smack    schedule 06.01.2011


Ответы (3)


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

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

person PowerUser    schedule 06.01.2011
comment
спасибо :-) ваша ссылка очень полезна, но я использую шаблон excel (xlt) в c#, ​​а не в vb... Можем ли мы добавить макрос в шаблон excel? Когда я открываю микроредактор в visual stdio, он не открывает микроредактор excel.... - person Smack; 07.01.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
person Marc Thibault    schedule 06.01.2011
comment
Спасибо за ваш ответ, но не могли бы вы уточнить, как добавить надстройку UDF и REGX в excel. Я занимаюсь кодированием на С# в шаблоне excel, и я не смог найти ссылки на инструменты на вкладке разработчика в Excel... - person Smack; 06.01.2011
comment
инструменты-›ссылки находятся в окне VBA, а не в окне Excel - person Joel Spolsky; 07.01.2011
comment
Нажмите Alt-F11, затем выберите Инструменты | использованная литература - person Marc Thibault; 07.01.2011

Чистый подход 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
person Nick Spreitzer    schedule 07.01.2011