Страницы: 1
RSS
Поиск текста в ячейках
 
Доброе утро!  
Как найти словосочетания в ячейках, которые содержат латиницу и кириллицу одновременно. Хочу их все выявить и подкорректировать. А то снабженцы назабивают обозначений разными языками, попробуй потом найти поиском :)
 
В приемах что-то такое было.
 
Наверное не в приемах, но вот может оно:  
'Проверка наличия в тексте символов латиницы  
Function IsLatin(Txt As String)  
   Txt = UCase(Txt)  
   mask = "*[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*"
         
   If Txt Like mask Then  
           IsLatin = True  
       Else  
           IsLatin = False  
   End If  
End Function
 
Вводится как формула массива:  
=НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(КОДСИМВ(ПСТР(A1&"A";СТРОКА($1:$99);1)&1);{0;65;123})=2;СТРОКА($1:$99));1)  
 
----  
98723
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Может, эта UDF вам поможет:  
http://excelvba.ru/code/SplitLanguages  
 
Функция SplitLanguages предназначена для отделения русских слов от английских  
(для разбиения заданной текстовой строки на две, в одной из которых будут только русские слова, а в другой - только английские)  
 
Функцию SplitLanguages можно использовать и в качестве формулы на листе Excel  
(см. пример в прикреплённом файле)
 
Спасибо, но этими способами проверяется вся ячейка целиком, а у меня запись в ячейке примерно такого типа: ПЛАСТИНА TN16ER 050M CGKFD 8030. Там есть наименование кириллицей и код латинскими буквами. Вот я и хочу проверить, нет ли в каком-нибудь из этих словосочетаний, разделенных пробелами, смешения кириллицы и латиницы.
 
"...Функцию SplitLanguages можно использовать и в качестве формулы на листе Excel  
(см. пример в прикреплённом файле)  
..."  
 
Интересно, а к чему Вы его прикрепили? :)
 
{quote}{login=Alexandrin}{date=15.09.2011 11:28}{thema=}{post}Спасибо, но этими способами проверяется вся ячейка целиком, а у меня запись в ячейке примерно такого типа: ПЛАСТИНА TN16ER 050M CGKFD 8030. Там есть наименование кириллицей и код латинскими буквами. Вот я и хочу проверить, нет ли в каком-нибудь из этих словосочетаний, разделенных пробелами, смешения кириллицы и латиницы.{/post}{/quote}  
Сразу видно, что Вы не попробовали воспользоваться функцией IsLatin из сообщения от 15.09.2011, 11:02.  
А Вы попробуйте, попробуйте! :)
 
{quote}{login=EducatedFool}{date=15.09.2011 11:25}{thema=}{post}Может, эта UDF вам поможет:  
http://excelvba.ru/code/SplitLanguages  
 
Функция SplitLanguages предназначена для отделения русских слов от английских  
(для разбиения заданной текстовой строки на две, в одной из которых будут только русские слова, а в другой - только английские)  
 
Функцию SplitLanguages можно использовать и в качестве формулы на листе Excel  
(см. пример в прикреплённом файле){/post}{/quote}  
Спасибо, это подходит
 
{quote}{login=гость}{date=15.09.2011 11:35}{thema=Re: }  
Сразу видно, что Вы не попробовали воспользоваться функцией IsLatin из сообщения от 15.09.2011, 11:02.  
А Вы попробуйте, попробуйте! :){/post}{/quote}  
Попробовал, функция выдает только ИСТИНА или ЛОЖЬ. Если бы у меня все обозначения были на русском, тогда можно было воспользоваться этой функцией, а так - нет.
 
{quote}{login=EducatedFool}{date=15.09.2011 11:25}{thema=}{post}Может, эта UDF вам поможет:  
http://excelvba.ru/code/SplitLanguages  
 
Функция SplitLanguages предназначена для отделения русских слов от английских  
(для разбиения заданной текстовой строки на две, в одной из которых будут только русские слова, а в другой - только английские)  
 
Функцию SplitLanguages можно использовать и в качестве формулы на листе Excel  
(см. пример в прикреплённом файле){/post}{/quote}  
Идеальный вариант для меня - когда русские и английские слова остаются на месте, а функция выбирает только смешанные русско-англ. слова
 
Вот вам функция:  
 
 
Function СмешениеАлфавитов(ByVal txt As String) As Boolean  
   Application.Volatile True  
   For Each word In Split(Trim(txt))  
       СмешениеАлфавитов = СмешениеАлфавитов Or (word Like "*[A-z]*" And word Like "*[А-я]*")
       If СмешениеАлфавитов Then Exit Function  
   Next word  
End Function  
 
 
А вот - пример в виде файла:  
http://excelvba.ru/XL_Files/Sample__15-09-2011__14-44-46.zip  
 
Если захотите найти, в какой именно букве ошибка - воспользуйтесь этой надстройкой:  
http://excelvba.ru/tools/CharCodes
 
Благодарю, очень помогло!
 
Ещё одна функция:  
 
Function НеправильныеСлова(ByVal txt As String) As String  
   Application.Volatile True  
   For Each word In Split(Trim(txt))  
       If word Like "*[A-z]*" And word Like "*[А-я]*" Then
           НеправильныеСлова = НеправильныеСлова & ", " & word  
       End If  
   Next word  
   If Len(НеправильныеСлова) Then НеправильныеСлова = Mid(НеправильныеСлова, 3)  
End Function  
 
 
И пример с ней: http://excelvba.ru/XL_Files/Sample__15-09-2011__15-10-43.zip
 
Вот это совсем супер! Сразу видно, какое слово нужно править
 
>>Like "*[A-z]*"
Если не ошибаюсь, в этот диапазон помимо букв латиницы входят еще другте символы.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
А возможно в этой формуле добавить параметр "цвет шрифта", например русские буквы - черным шрифтом, а английские - красным?
 
EducatedFool, предыдущий мой пост был адресован Вам : )  
 
Sub io()  
MsgBox "[" Like "[A-z]"
End Sub  
 
Sub io2()  
MsgBox "[" Like "[A-Za-zА-я]"
End Sub  
 
[
\  
]  
^  
_  
`
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
забыл добавить, без "Ёё"
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
nerv, я в курсе, что буква Ё не попадает в заданный список, но я очень сомневаюсь, что это будет иметь какое-то значение при использовании макроса на реальных данных  
 
Насчёт других символов в диапазоне [A-z] - это вряд ли...
 
Впрочем, зачем придираться к коду, если заказчик говорит "всё супер" )
 
>>Насчёт других символов в диапазоне [A-z] - это вряд ли...
 
Sub io()  
MsgBox "[" Like "[A-z]"
End Sub  
 
= True ? ))) Если да, то постом выше я привел все символы (не латиница), кот. будут входить в этот диапазон.  
 
Sub io2()  
MsgBox "[" Like "[A-Za-z]"
End Sub  
 
= False (по идее)  
 
>>зачем придираться к коду, если заказчик говорит "всё супер" )  
Я не придираюсь) Просто, чтобы Вы имелли в виду, да и объективности ради. Может это Вам когда-нибудь очень пригодится, как мне, например : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Раздел "Приемы": http://www.planetaexcel.ru/tip.php?aid=67 Вариант 2.
Страницы: 1
Читают тему
Наверх