| 
    
            
         
         | 
    
  | 
Excel узнать, есть ли в данных символы, кроме указанных | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Adgjj    
     10.02.15 
            ✎
    10:07 
 | 
         
        Допустимые символы в текстовых данных экселя:
 
        a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 / - ? : ( ) . , ' + Нужно найти другие символы или определить, что все символы являются допустимыми.  | 
|||
| 
    1
    
        Ненавижу 1С    
     гуру 
    10.02.15 
            ✎
    10:12 
 | 
         
        каждый символ данных ищешь в строке "a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 / - ? : ( ) . , ' + " (без пробелов только)
 
        если не находится, то это недопустимый символ  | 
|||
| 
    2
    
        Cube    
     10.02.15 
            ✎
    10:12 
 | 
         
        (0) Держи нас в курсе.     
         | 
|||
| 
    3
    
        Adgjj    
     10.02.15 
            ✎
    10:15 
 | 
         
        В эксель-файле много столбцов и очень много строк. Надо как-то быстро проверить.     
         | 
|||
| 
    4
    
        polosov    
     10.02.15 
            ✎
    10:17 
 | 
         
        (3) Скоро только кошки родятся(с)
 
        Читай файлик и сравнивай.  | 
|||
| 
    5
    
        Adgjj    
     10.02.15 
            ✎
    10:27 
 | 
         
        мне нужно не программныv путем, а с помощью функций экселя. Т.к. инф-ция из SAP.     
         | 
|||
| 
    6
    
        b_ru    
     10.02.15 
            ✎
    10:35 
 | 
         
        Sub Check()
 
        Symbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-?:().,'+ " res = "" For Each cell In ActiveSheet.UsedRange For i = 1 To Len(cell.Text) s = Mid(cell.Text, i, 1) If InStr(1, Symbols, s) = 0 Then res = res & "R" & cell.Row & "C" & cell.Column & ": недопустимый символ " & s & vbCrLf Exit For End If Next i Next cell MsgBox res End Sub  | 
|||
| 
    7
    
        Adgjj    
     10.02.15 
            ✎
    10:41 
 | 
         
        Спасибо, конечно. 
 
        Без макроса есть возможность проверить только формулами?  | 
|||
| 
    8
    
        b_ru    
     10.02.15 
            ✎
    11:42 
 | 
         
        Быстро в смысле времени выполнения?     
         | 
|||
| 
    9
    
        SUA    
     10.02.15 
            ✎
    11:53 
 | 
||||
| 
    10
    
        Adgjj    
     10.02.15 
            ✎
    12:01 
 | 
         
        (8) да, т.к. объем инфо очень большой     
         | 
|||
| 
    11
    
        Adgjj    
     10.02.15 
            ✎
    12:01 
 | 
         
        (9) смотрю что за регулярные выражения     
         | 
|||
| 
    12
    
        b_ru    
     10.02.15 
            ✎
    12:58 
 | 
         
        (10) Тогда о формулах в принципе нужно забыть.
 
        Ну и в предложенном макросе вместо поиска в строке в условии If InStr(1, Symbols, s) = 0 Then использовать сравнение кодов символа  | 
|||
| 
    13
    
        Lama12    
     10.02.15 
            ✎
    13:09 
 | 
         
        (7) Можно. Нужно один лист сделать только из формул и с помощью него проверять.
 
        ИМХО. Пусть лучше САП проверяет что символы правильные. Для Excel это не родная задачка, а SAP, как я понял из (5), является источником. Почему бы при выгрузке не проверить?  | 
|||
| 
    14
    
        ShoGUN    
     10.02.15 
            ✎
    13:15 
 | 
         
        Если важна скорость - проще записать данные из экселя в текст(csv), а текст можно хоть чем обрабатывать.     
         | 
|||
| 
    15
    
        Лефмихалыч    
     10.02.15 
            ✎
    13:21 
 | 
         
        а вот в опенофисе можно использовать регулярки для поиска и замены безо всяких там сцаных макросов...
 
        (0) что значит "найти или определить"? Тебе нужно удалить все, что не считается допустимым или просто получить ответ на вопрос "есть или нет"?  | 
|||
| 
    16
    
        Adgjj    
     10.02.15 
            ✎
    13:59 
 | 
         
        Спасибо всем.
 
        (15) Нужно сказать пользователю, для какой строки в каких столбцах есть недопустимые символы. опенофиса никогда не видела, к сожалению у нас MS Excel 2010 (13) проверка в SAPе отпадает  | 
|||
| 
    17
    
        Adgjj    
     10.02.15 
            ✎
    14:00 
 | 
         
        (14) посмотрю в инете что такое csv. И чем например его можно обработать.     
         | 
|||
| 
    18
    
        Adgjj    
     10.02.15 
            ✎
    14:01 
 | 
         
        (13) наверено очень длинная формула получится. проверять каждый символ.     
         | 
|||
| 
    19
    
        Лефмихалыч    
     10.02.15 
            ✎
    14:02 
 | 
         
        (16) макрос нарисуй с использованием vbscript regexp. Регулярка такая:
 
        "[^A-z|0-9|\/|-|\?|\:|(|)|.|\,|\'|+]"  | 
|||
| 
    20
    
        Adgjj    
     10.02.15 
            ✎
    14:04 
 | 
         
        (19) в MS Excel 2010 можно? Новичку долго разбираться, что такое vbscript regexp?     
         | 
|||
| 
    21
    
        Adgjj    
     10.02.15 
            ✎
    14:23 
 | 
         
        в MS Excel 2010 через References подключила Microsot VBScript Regular Expressions 5.5.     
         | 
|||
| 
    22
    
        Adgjj    
     11.02.15 
            ✎
    09:39 
 | 
         
        Посмотрите, пжл, почему-то моя функция =rgx(B7) не работает.
 
        Public Function Rgx(astring As Range) As String Dim re As RegExpSet 're - понимает RegExp Dim tempString re.Pattern = "[^A-z|0-9|\/|-|\?|\:|(|)|.|\,|\'|+]" 'Шаблон re.Global = True 'True - проверка всего текста, False - проверка до перовго соответствия re.IgnoreCase = True 'True - учитывать регистр, False - игнорировать регистра 're.MultiLine = True 'True - многострочный объект, False - однострочный объект tempString = re.Test(astring) 'возвращает False, если строка не соответствует шаблону If tempString = False Then RgxPhone = "Недопустимый символ!" End Function  | 
|||
| 
    23
    
        Adgjj    
     11.02.15 
            ✎
    09:42 
 | 
         
        Вернее, так
 
        Public Function Rgx(astring As Range) As String Dim re As RegExpSet 're - понимает RegExp Dim tempString re.Pattern = "[^A-z|0-9|\/|-|\?|\:|(|)|.|\,|\'|+]" 'Шаблон re.Global = True 'True - проверка всего текста, False - проверка до перовго соответствия re.IgnoreCase = True 'True - учитывать регистр, False - игнорировать регистра 're.MultiLine = True 'True - многострочный объект, False - однострочный объект tempString = re.Test(astring) 'возвращает False, если строка не соответствует шаблону If tempString = False Then Rgx = "Недопустимый символ!" End Function  | 
|||
| 
    24
    
        Adgjj    
     13.02.15 
            ✎
    16:19 
 | 
         
        Шаблон: re.Pattern = "[A-z|0-9|\Q-|?|:|(|)|.|,|'|+|s\E]"
 
        Не находит символ "&" в строке "Pen&". В строке "&" находит.  | 
|||
| 
    25
    
        Adgjj    
     13.02.15 
            ✎
    16:19 
 | 
         
        в шаблоне перечислены допустимые символы.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |