Как поставить проверку текста для специального символа в ячейке частиц в Excel? - PullRequest
0 голосов
/ 04 июля 2019

В конкретной ячейке в Excel, я должен поставить проверку, чтобы пользователь не мог вводить текстовые значения со специальным чартером, таким как "-", ",", "|", "/", ... между, кроме "_" (подчеркивание).

Я написал специальную формулу для этого, и она работает, но у нее есть ограничение, которая не решает мою проблему полностью.

Вот формула:

=ISNUMBER(FIND("_",A1))

, поэтому, когда пользователь вводит текст с другим символом, таким как "," или "-" между текстовыми значениями, он выдаст ошибку проверки.

Но если пользователь вводит только текст без каких-либо специальных символов, он также выдает ошибку, и пользователь не может ввести текст.

если пользователь вводит только текст, он разрешает ввод текста, но если пользователь вводит текст со специальным символом, он допускает только "_" специальный символ.

пример:

  • разрешено: "StackOverflow", "Stack_Overflow"
  • не допускается: "Stack-Overflow", "Stack, Overflow" или любой другой специальный символ.

Ответы [ 3 ]

4 голосов
/ 04 июля 2019

Для более сложного теста, который допускает только эти символы [A-Za-z0-9_], используйте Регулярные выражения .

Этот шаблон ^[A-Za-z0-9_]+$ будет разрешать только ...

  • [A-Z] заглавные буквы
  • [a-z] строчные буквы
  • [0-9] цифры
  • [_] подчеркивание

… где любое из них встречается хотя бы один раз или более. Любой другой персонаж не допускается. Смотрите и тестируйте по адресу: https://regex101.com/r/DnQrAq/1

Option Explicit

Public Function SpecialValidate(ByVal InputValue As String) As Boolean
    Dim RegEx As Object
    Set RegEx = CreateObject("vbscript.regexp")

    Const RegExPattern As String = "^[A-Za-z0-9_]+$"

    With RegEx
        .Pattern = RegExPattern
        .Global = True
        .MultiLine = True

        If .test(InputValue) Then
            SpecialValidate = True
        End If
    End With
End Function

Затем вы можете легко использовать это как формулу =SpecialValidate(A2) для проверки любого значения ячейки:

enter image description here Извините за скриншот на немецком языке: WAHR = TRUE и FALSCH = FALSE

1 голос
/ 04 июля 2019

Предполагается, что один символ в исключенной группе также недействителен:

=SUM(ISNUMBER(FIND("-",A1)),ISNUMBER(FIND(",",A1)),ISNUMBER(FIND("|",A1)),ISNUMBER(FIND("/",A1)))=0

Поскольку константы массива не могут быть включены в формулу проверки, вы можете перечислить каждый исключенный символ отдельно.

С полным списком того, что должно быть включено или исключено, возможна более компактная формула.

0 голосов
/ 04 июля 2019

Вы можете использовать:

=IF(IF(LEN(C1)-LEN(SUBSTITUTE(C1,"-",""))>0,1,0)+IF(LEN(C1)-LEN(SUBSTITUTE(C1,",",""))>0,1,0)+IF(LEN(C1)-LEN(SUBSTITUTE(C1,"/",""))>0,1,0)+IF(LEN(C1)-LEN(SUBSTITUTE(C1,"|",""))>0,1,0)>0,"Invalid Character","Correct")

Результаты:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...