|
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
|
в шаблоне перечислены допустимые символы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |