Проверка ячеек в EXCEL на наличие недопустимых символов - PullRequest
0 голосов
/ 27 апреля 2020

У меня в таблице много ячеек, содержащих текст. Я хотел бы добавить функцию (если возможно со стандартными функциями Excel) для получения текста «Внимание» (или аналогичного), если в ячейке ссылки содержится символ, которого нет в области ссылок.

  • ячейка A1 содержит текст для проверки,
  • ячейка B1 содержит функцию proof_chrs (A1, список! $ A $ 1)
  • список дополнительных листов, содержит строку "abcdefghijklmnopqrstuvwxyz1234567890"

Примеры:

  1. Если A1 содержит функцию «stackoverflow», proof_chrs ничего не возвращает (B1 пуст).
  2. Если A1 содержит функцию Stackoverflow, proof_chrs возвращает «Внимание» (B1 содержит «Attention»).
  3. Если A1 содержит «stAckoverflow», функция proof_chrs возвращает «Attention» (B1 содержит «Attention»).

Wishlist: Функция proof_chrs также должна возвращать позиция первого «недопустимого» символа. В третьем примере это будет 3. Возвращение нуля скажет, что недопустимого символа нет. Новые примеры:

  1. Если в A1 содержится функция «stackoverflow», B1 равна нулю.
  2. Если в A1 содержится функция «Stackoverflow», B1 содержит 1.
  3. Если A1 содержит Функция stAckoverflow B1 содержит 3.

Можно было бы скопировать функцию из B1 в B2, B3, ...

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

попробуйте это:

Public Function proof_chrs(rng As Range, list As Range) As String
   Dim i As Long
   Dim s As String
   proof_chrs = ""
   If rng.Cells.Count = 1 And list.Count = 1 Then
       s = rng.Text
       For i = 1 To Len(s)
           If InStr(1, list.Text, Mid(s, i, 1), vbBinaryCompare) = 0 Then proof_chrs = "Attention": Exit For
       Next i
   End If
End Function

и

Public Function proof_chrn(rng As Range, list As Range) As Long
    Dim i As Long
    Dim s As String
    proof_chrn = 0
    If rng.Cells.Count = 1 And list.Count = 1 Then
        s = rng.Text
        For i = 1 To Len(s)
            If InStr(1, list.Text, Mid(s, i, 1), vbBinaryCompare) = 0 Then proof_chrn = i: Exit For
        Next i
    End If
End Function
0 голосов
/ 27 апреля 2020

Инспектор запрещенных символов

Option Explicit

Function proof_chrs(examineString As String, compareCharacters As String, _
  Optional CaseInSensitive1 As VbCompareMethod = 0) As Long

    Dim i As Long

    If Len(examineString) = 0 Or Len(compareCharacters) = 0 Then _
      Exit Function

    For i = 1 To Len(examineString)
        If InStr(1, compareCharacters, Mid(examineString, i, 1), _
          CaseInSensitive1) = 0 Then proof_chrs = i: Exit For
    Next i

End Function

enter image description here

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