Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Отбор строк по указанным мною символам - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Отбор строк по указанным мною символам
x3v Дата: Суббота, 16.02.2013, 17:37 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Попробую объяснить наглядно, что мне требуется.
Например, я имею следующий список.
Цитата
100771;canada095
100777;dmitri
100787;pazu
100796;icc100796
100803;bestuins
100804;newbie2k
100805;Їµ±K
100806;ў¶
100809;ggggogo
100810;alexei
100813;100813
100820;zvip2009
100821;µµµµµµµµµ
100829;info
100843;100843
100844;support
100845;icq100845
100871;yuvalsapir
100880;mdjricky
100880;sab

Как видно, в нём содержатся цифры,английские символы + символы, использованные из других языков, а именно:Їµ±ў¶
так вот, мне нужно, чтобы эксель, отобрал только те строки, которые содержат чисто цифры, символ ; и английские буквы.
т.е. из указанного выше списка, он должен превратить его в следующий:
Цитата
100771;canada095
100777;dmitri
100787;pazu
100796;icc100796
100803;bestuins
100804;newbie2k
100809;ggggogo
100810;alexei
100813;100813
100820;zvip2009
100829;info
100843;100843
100844;support
100845;icq100845
100871;yuvalsapir
100880;mdjricky
100880;sab

т.е. мне требуется - чтобы он отбирал строки, содержащие только символы указанные из моего списка(мне не нужно, чтобы он искал только все символы сразу, а искал - что хотя бы один из следующих символов, присутствует в строке):1234567890;qwertyuiopasdfghjklzxcvbnm
все остальные строки, содержащие "неправильные" символы - он должен откинуть.

К сожалению, я не имею этот список "неправильных" символов, чтобы можно было закинуть их в фильтр, и быстро решить вопрос.
Вручную это дело делать тоже очень долго, т.к.
список имеет более миллиона строк


Сообщение отредактировал x3v - Суббота, 16.02.2013, 17:45
 
Ответить
СообщениеПопробую объяснить наглядно, что мне требуется.
Например, я имею следующий список.
Цитата
100771;canada095
100777;dmitri
100787;pazu
100796;icc100796
100803;bestuins
100804;newbie2k
100805;Їµ±K
100806;ў¶
100809;ggggogo
100810;alexei
100813;100813
100820;zvip2009
100821;µµµµµµµµµ
100829;info
100843;100843
100844;support
100845;icq100845
100871;yuvalsapir
100880;mdjricky
100880;sab

Как видно, в нём содержатся цифры,английские символы + символы, использованные из других языков, а именно:Їµ±ў¶
так вот, мне нужно, чтобы эксель, отобрал только те строки, которые содержат чисто цифры, символ ; и английские буквы.
т.е. из указанного выше списка, он должен превратить его в следующий:
Цитата
100771;canada095
100777;dmitri
100787;pazu
100796;icc100796
100803;bestuins
100804;newbie2k
100809;ggggogo
100810;alexei
100813;100813
100820;zvip2009
100829;info
100843;100843
100844;support
100845;icq100845
100871;yuvalsapir
100880;mdjricky
100880;sab

т.е. мне требуется - чтобы он отбирал строки, содержащие только символы указанные из моего списка(мне не нужно, чтобы он искал только все символы сразу, а искал - что хотя бы один из следующих символов, присутствует в строке):1234567890;qwertyuiopasdfghjklzxcvbnm
все остальные строки, содержащие "неправильные" символы - он должен откинуть.

К сожалению, я не имею этот список "неправильных" символов, чтобы можно было закинуть их в фильтр, и быстро решить вопрос.
Вручную это дело делать тоже очень долго, т.к.
список имеет более миллиона строк

Автор - x3v
Дата добавления - 16.02.2013 в 17:37
ikki Дата: Суббота, 16.02.2013, 17:49 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
решение есть (макросом, с использованием регулярных выражений)
файлик с примером будет?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 16.02.2013, 18:02
 
Ответить
Сообщениерешение есть (макросом, с использованием регулярных выражений)
файлик с примером будет?

Автор - ikki
Дата добавления - 16.02.2013 в 17:49
Michael_S Дата: Суббота, 16.02.2013, 22:03 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Прописные буквы латинского алфавита - "правильные" или"не правильные"?
а пробел?


Сообщение отредактировал Michael_S - Суббота, 16.02.2013, 22:05
 
Ответить
СообщениеПрописные буквы латинского алфавита - "правильные" или"не правильные"?
а пробел?

Автор - Michael_S
Дата добавления - 16.02.2013 в 22:03
ikki Дата: Суббота, 16.02.2013, 22:17 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
Цитата (x3v)
искал - что хотя бы один из следующих символов, присутствует в строке

это условие вообще-то противоречит второму приведенному списку tongue biggrin


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
Цитата (x3v)
искал - что хотя бы один из следующих символов, присутствует в строке

это условие вообще-то противоречит второму приведенному списку tongue biggrin

Автор - ikki
Дата добавления - 16.02.2013 в 22:17
x3v Дата: Воскресенье, 17.02.2013, 11:34 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

ikki,
Цитата (x3v)
что хотя бы один из следующих символов, присутствует в строке:1234567890;qwertyuiopasdfghjklzxcvbnm

т.е. мне требуется - чтобы отобрались только те строки, содержащие - только данные символы(не все сразу вместе символы, можно 1,2,3 символа только и т.д.)
каждая строчка второго списка
содержит только данные символы: 1234567890;qwertyuiopasdfghjklzxcvbnm
т.е. отличие первого и второго списка в том, что в первом были строки с иероглифами Їµ±ў¶
а во втором списке, строки - содержащие следующие иероглифы - исчезли. мне это и нужно
Michael_S, мне желательно, чтобы полный список содержащихся символов был следующим:
~!@#$%^&*()1234567890;qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM, а также пробел в числе них, т.е. нужны строки, состоящие из символов, моего списка, не обязательно всех, т.е. даже строки:
Цитата
qw
a94
difr
удовлетворят моему условию, т.к. все эти символы входят в список требуемых символов,
ковычки и прочие символы не интересны.(хотя так или иначе это под вопросом, хотелось бы иметь возможность добавлять мои символы в фильтр,формулу или алгоритм, не знаю. есть ли вообще такое решение..)


Сообщение отредактировал x3v - Воскресенье, 17.02.2013, 11:39
 
Ответить
Сообщениеikki,
Цитата (x3v)
что хотя бы один из следующих символов, присутствует в строке:1234567890;qwertyuiopasdfghjklzxcvbnm

т.е. мне требуется - чтобы отобрались только те строки, содержащие - только данные символы(не все сразу вместе символы, можно 1,2,3 символа только и т.д.)
каждая строчка второго списка
содержит только данные символы: 1234567890;qwertyuiopasdfghjklzxcvbnm
т.е. отличие первого и второго списка в том, что в первом были строки с иероглифами Їµ±ў¶
а во втором списке, строки - содержащие следующие иероглифы - исчезли. мне это и нужно
Michael_S, мне желательно, чтобы полный список содержащихся символов был следующим:
~!@#$%^&*()1234567890;qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM, а также пробел в числе них, т.е. нужны строки, состоящие из символов, моего списка, не обязательно всех, т.е. даже строки:
Цитата
qw
a94
difr
удовлетворят моему условию, т.к. все эти символы входят в список требуемых символов,
ковычки и прочие символы не интересны.(хотя так или иначе это под вопросом, хотелось бы иметь возможность добавлять мои символы в фильтр,формулу или алгоритм, не знаю. есть ли вообще такое решение..)

Автор - x3v
Дата добавления - 17.02.2013 в 11:34
Michael_S Дата: Воскресенье, 17.02.2013, 16:28 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
формула массива
Код
=ЕОШ(СУММ(ПОИСК(ПСТР(A1;СТРОКА($1:$97);1);"; 0123456789qwertyuiopasdfghjklzxcvbnm")))

отфильтровать по ИСТИНА и удалить видимые строки. Полный столбец примерно по минуте на каждое действие.
Или код
[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-х минут до...
 
Ответить
Сообщениеформула массива
Код
=ЕОШ(СУММ(ПОИСК(ПСТР(A1;СТРОКА($1:$97);1);"; 0123456789qwertyuiopasdfghjklzxcvbnm")))

отфильтровать по ИСТИНА и удалить видимые строки. Полный столбец примерно по минуте на каждое действие.
Или код
[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
Дата добавления - 17.02.2013 в 16:28
ikki Дата: Воскресенье, 17.02.2013, 18:09 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
для символов
Цитата (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сек.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениедля символов
Цитата (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
Дата добавления - 17.02.2013 в 18:09
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!