Excel узнать, есть ли в данных символы, кроме указанных #733599


#0 by Adgjj
Допустимые символы в текстовых данных экселя: 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 by Ненавижу 1С
каждый символ данных ищешь в строке "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 by Cube
Держи нас в курсе.
#3 by Adgjj
В эксель-файле много столбцов и очень много строк. Надо как-то быстро проверить.
#4 by polosov
Скоро только кошки родятся(с) Читай файлик и сравнивай.
#5 by Adgjj
мне нужно не программныv путем, а с помощью функций экселя. Т.к. инф-ция из SAP.
#6 by b_ru
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 by Adgjj
Спасибо, конечно. Без макроса есть возможность проверить только формулами?
#8 by b_ru
Быстро в смысле времени выполнения?
#10 by Adgjj
да, т.к. объем инфо очень большой
#11 by Adgjj
смотрю что за регулярные выражения
#12 by b_ru
Тогда о формулах в принципе нужно забыть. Ну и в предложенном макросе вместо поиска в строке в условии If InStr(1, Symbols, s) = 0 Then использовать сравнение кодов символа
#13 by Lama12
Можно. Нужно один лист сделать только из формул и с помощью него проверять. ИМХО. Пусть лучше САП проверяет что символы правильные. Для Excel это не родная задачка, а SAP, как я понял из , является источником. Почему бы при выгрузке не проверить?
#14 by ShoGUN
Если важна скорость - проще записать данные из экселя в текст(csv), а текст можно хоть чем обрабатывать.
#15 by Лефмихалыч
а вот в опенофисе можно использовать регулярки для поиска и замены безо всяких там сцаных макросов... что значит "найти или определить"? Тебе нужно удалить все, что не считается допустимым или просто получить ответ на вопрос "есть или нет"?
#16 by Adgjj
Спасибо всем. Нужно сказать пользователю, для какой строки в каких столбцах есть недопустимые символы. опенофиса никогда не видела, к сожалению у нас MS Excel 2010 проверка в SAPе отпадает
#17 by Adgjj
посмотрю в инете что такое csv. И чем например его можно обработать.
#18 by Adgjj
наверено очень длинная формула получится. проверять каждый символ.
#19 by Лефмихалыч
макрос нарисуй с использованием vbscript regexp. Регулярка такая: "[^A-z|0-9|/|-|?|:|(|)|.|,|'|+]"
#20 by Adgjj
в MS Excel 2010 можно? Новичку долго разбираться, что такое vbscript regexp?
#21 by Adgjj
в MS Excel 2010 через References подключила Microsot VBScript Regular Expressions 5.5.
#22 by Adgjj
Посмотрите, пжл, почему-то моя функция =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 by Adgjj
Вернее, так 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 by Adgjj
Шаблон: re.Pattern = "[A-z|0-9|Q-|?|:|(|)|.|,|'|+|sE]" Не находит символ "&" в строке "Pen&". В строке "&" находит.
#25 by Adgjj
в шаблоне перечислены допустимые символы.
Тэги: IT-новости
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С