Как видно, в нём содержатся цифры,английские символы + символы, использованные из других языков, а именно:Їµ±ў¶ так вот, мне нужно, чтобы эксель, отобрал только те строки, которые содержат чисто цифры, символ ; и английские буквы. т.е. из указанного выше списка, он должен превратить его в следующий:
т.е. мне требуется - чтобы он отбирал строки, содержащие только символы указанные из моего списка(мне не нужно, чтобы он искал только все символы сразу, а искал - что хотя бы один из следующих символов, присутствует в строке):1234567890;qwertyuiopasdfghjklzxcvbnm все остальные строки, содержащие "неправильные" символы - он должен откинуть.
К сожалению, я не имею этот список "неправильных" символов, чтобы можно было закинуть их в фильтр, и быстро решить вопрос. Вручную это дело делать тоже очень долго, т.к. список имеет более миллиона строк
Попробую объяснить наглядно, что мне требуется. Например, я имею следующий список.
Как видно, в нём содержатся цифры,английские символы + символы, использованные из других языков, а именно:Їµ±ў¶ так вот, мне нужно, чтобы эксель, отобрал только те строки, которые содержат чисто цифры, символ ; и английские буквы. т.е. из указанного выше списка, он должен превратить его в следующий:
т.е. мне требуется - чтобы он отбирал строки, содержащие только символы указанные из моего списка(мне не нужно, чтобы он искал только все символы сразу, а искал - что хотя бы один из следующих символов, присутствует в строке):1234567890;qwertyuiopasdfghjklzxcvbnm все остальные строки, содержащие "неправильные" символы - он должен откинуть.
К сожалению, я не имею этот список "неправильных" символов, чтобы можно было закинуть их в фильтр, и быстро решить вопрос. Вручную это дело делать тоже очень долго, т.к. список имеет более миллиона строкx3v
Сообщение отредактировал x3v - Суббота, 16.02.2013, 17:45
что хотя бы один из следующих символов, присутствует в строке:1234567890;qwertyuiopasdfghjklzxcvbnm
т.е. мне требуется - чтобы отобрались только те строки, содержащие - только данные символы(не все сразу вместе символы, можно 1,2,3 символа только и т.д.) каждая строчка второго списка содержит только данные символы: 1234567890;qwertyuiopasdfghjklzxcvbnm т.е. отличие первого и второго списка в том, что в первом были строки с иероглифами Їµ±ў¶ а во втором списке, строки - содержащие следующие иероглифы - исчезли. мне это и нужно Michael_S, мне желательно, чтобы полный список содержащихся символов был следующим: ~!@#$%^&*()1234567890;qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM, а также пробел в числе них, т.е. нужны строки, состоящие из символов, моего списка, не обязательно всех, т.е. даже строки:
Цитата
qw a94 difr
удовлетворят моему условию, т.к. все эти символы входят в список требуемых символов, ковычки и прочие символы не интересны.(хотя так или иначе это под вопросом, хотелось бы иметь возможность добавлять мои символы в фильтр,формулу или алгоритм, не знаю. есть ли вообще такое решение..)
ikki,
Цитата (x3v)
что хотя бы один из следующих символов, присутствует в строке:1234567890;qwertyuiopasdfghjklzxcvbnm
т.е. мне требуется - чтобы отобрались только те строки, содержащие - только данные символы(не все сразу вместе символы, можно 1,2,3 символа только и т.д.) каждая строчка второго списка содержит только данные символы: 1234567890;qwertyuiopasdfghjklzxcvbnm т.е. отличие первого и второго списка в том, что в первом были строки с иероглифами Їµ±ў¶ а во втором списке, строки - содержащие следующие иероглифы - исчезли. мне это и нужно Michael_S, мне желательно, чтобы полный список содержащихся символов был следующим: ~!@#$%^&*()1234567890;qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM, а также пробел в числе них, т.е. нужны строки, состоящие из символов, моего списка, не обязательно всех, т.е. даже строки:
Цитата
qw a94 difr
удовлетворят моему условию, т.к. все эти символы входят в список требуемых символов, ковычки и прочие символы не интересны.(хотя так или иначе это под вопросом, хотелось бы иметь возможность добавлять мои символы в фильтр,формулу или алгоритм, не знаю. есть ли вообще такое решение..)x3v
Сообщение отредактировал x3v - Воскресенье, 17.02.2013, 11:39
отфильтровать по ИСТИНА и удалить видимые строки. Полный столбец примерно по минуте на каждое действие. Или код [vba]
Код
Sub tyui() Dim a(), s, i, ii s = "; 0123456789qwertyuiopasdfghjklzxcvbnm" a = Range("A:A") For i = Rows.Count To 1 Step -1 For ii = 1 To Len(a(i, 1)) If Not s Like "*" & LCase(Mid(a(i, 1), ii, 1)) & "*" Then Rows(i & ":" & i).Delete Exit For End If Next Next End Sub
[/vba] в зависимости от количества удаляемых строк от 3-х минут до...
отфильтровать по ИСТИНА и удалить видимые строки. Полный столбец примерно по минуте на каждое действие. Или код [vba]
Код
Sub tyui() Dim a(), s, i, ii s = "; 0123456789qwertyuiopasdfghjklzxcvbnm" a = Range("A:A") For i = Rows.Count To 1 Step -1 For ii = 1 To Len(a(i, 1)) If Not s Like "*" & LCase(Mid(a(i, 1), ii, 1)) & "*" Then Rows(i & ":" & i).Delete Exit For End If Next Next End Sub
[/vba] в зависимости от количества удаляемых строк от 3-х минут до...Michael_S
Sub sre() Dim re As Object, a(), b(), i&, j& Set re = CreateObject("vbscript.regexp") With re .ignorecase = False .Pattern = "^[ ;\da-z]+$" End With a = Range([a1], Cells(Rows.Count, 1).End(xlUp)).Value ReDim b(1 To UBound(a), 1 To 1) For i = 1 To UBound(a) If re.test(a(i, 1)) Then j = j + 1: b(j, 1) = a(i, 1) Next [b1].Resize(j).Value = b End Sub
[/vba]
для символов
Цитата (x3v)
~!@#$%^&*()1234567890;qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM, а также пробел
всё то же, кроме [vba]
Код
.Pattern = "^[ ~!@#$%^&*();\dA-Za-z]+$"
[/vba]
на моём простеньком ноуте с селероном первый код для 50000 строк отработал за 0,43сек.
для символов
Цитата (x3v)
1234567890;qwertyuiopasdfghjklzxcvbnm
плюс пробел, регистр учитывается. [vba]
Код
Sub sre() Dim re As Object, a(), b(), i&, j& Set re = CreateObject("vbscript.regexp") With re .ignorecase = False .Pattern = "^[ ;\da-z]+$" End With a = Range([a1], Cells(Rows.Count, 1).End(xlUp)).Value ReDim b(1 To UBound(a), 1 To 1) For i = 1 To UBound(a) If re.test(a(i, 1)) Then j = j + 1: b(j, 1) = a(i, 1) Next [b1].Resize(j).Value = b End Sub
[/vba]
для символов
Цитата (x3v)
~!@#$%^&*()1234567890;qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM, а также пробел
всё то же, кроме [vba]
Код
.Pattern = "^[ ~!@#$%^&*();\dA-Za-z]+$"
[/vba]
на моём простеньком ноуте с селероном первый код для 50000 строк отработал за 0,43сек.ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki