- Найти латиницу в Excel – функция
- Найти кириллицу в Excel – функция
- Как найти прописные буквы
- Функция поиска прописных символов латиницы
- Функция поиска прописных кириллических символов
- Функция поиска любых прописных символов
- Функции “Найти латиницу” и “Найти кириллицу” с помощью UDF
- Найти латинские буквы в 2 клика
- Найти слова, содержащие и кириллицу, и латиницу
- С помощью регулярных выражений
- В две итерации
- Кейсы дальнейшего взаимодействия с данными
- Удалить
- Извлечь
- Изменить регистр
- Заменить символы
Важно: поскольку термин “найти” часто в сознании людей предполагает “найти и извлечь”, сразу оговоримся, что ниже именно булевая интерпретация поиска, иначе говоря, результата два – нашёл или не нашёл. Похожая, но все же другая задача – извлечь символы латиницы.
Текст, содержащий латиницу помимо кириллицы — довольно частое явление, и выявить, в какой раскладке текст, не всегда возможно визуально. Начертание многих символов в обеих раскладках идентично.
Когда нужно просто глазами обнаружить латиницу среди кириллических символов или наоборот, кириллицу в английском тексте, есть очень простое решение – использование неклассических шрифтов в Excel.
Например, Dubai Light сделает латиницу тоньше, Dubai Medium – жирнее кириллицы, Microsoft Himalaya – ниже, а Ink Free – выделит ее курсивом.
Но когда исходных данных много, важно не просто видеть, но и иметь возможность отфильтровать или отсортировать такие ячейки. Вариантов упростить и ускорить решение задачи несколько.
Задача поиска букв латинского алфавита в тексте – одна из нетривиальных в Excel, как и поиска любой длинной последовательности единичных символов. Как и в случае с поиском цифр, при обычном поиске придется перебирать все латинские буквы – а их 26, что ещё больше, чем цифр.
Составная формула массива пригодится в случаях, когда не хочется или нет возможности пользоваться макросами или пользовательскими функциями (UDF):
=СЧЁТ(ПОИСК({"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"};A1))>0
Здесь A1 — ячейка, которую мы хотим “проверить” на наличие в ней латиницы. Функция возвращает “ИСТИНА” или “ЛОЖЬ”. Важно отметить, что функция “ПОИСК” не является регистрозависимой, поэтому позволяет найти буквы в любом регистре.
Можно ли диапазон букв выразить иным способом? Да, формулой массива, а помогут в этом функция СИМВОЛ и функция СТРОКА:
{=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(65:90));A1))>0}
Отличие этой формулы массива от предыдущей – её нужно вводить без фигурных скобок, они появятся при вводе формулы сочетанием Ctrl + Shift + Enter (вместо обычного Enter). В формуле выше, где явно прописаны все буквы, фигурные скобки вводятся вручную — это явное указание строкового массива.
Найти кириллицу в Excel – функция
Как вы, наверное, догадались, найти кириллицу в тексте можно аналогичным путем:
=СЧЁТ(ПОИСК({"а":"б":"в":"г":"д":"е":"ё":"ж":"з":"и":"й":"к":"л":"м":"н":"о":"п":"р":"с":"т":"у":"ф":"х":"ц":"ч":"ш":"щ":"ъ":"ы":"ь":"э":"ю":"я"};A1))>0
Или формулой массива с функцией СИМВОЛ:
{=СЧЁТ(ПОИСК(СИМВОЛ(СТРОКА(192:223));A1))>0}
Формула массива будет работать корректно, если языком системы для non-Unicode программ выбран русский.
Есть небольшая разница в двух этих формулах – вторая в отличие от первой использует 32 буквы, т.к. буква Ё не входит в диапазон символов.
Как найти прописные буквы
В отличие от “ПОИСК”, “НАЙТИ” – функция регистрозависимая, что позволяет найти буквы в том регистре, в котором они перечислены.
Функция поиска прописных символов латиницы
=СЧЁТ(НАЙТИ({"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"};A1))>0
Функция поиска прописных кириллических символов
=СЧЁТ(НАЙТИ({"А":"Б":"В":"Г":"Д":"Е":"Ё":"Ж":"З":"И":"Й":"К":"Л":"М":"Н":"О":"П":"Р":"С":"Т":"У":"Ф":"Х":"Ц":"Ч":"Ш":"Щ":"Ъ":"Ы":"Ь":"Э":"Ю":"Я"};A1))>0
Функция поиска любых прописных символов
Поможет вам найти в ячейке символы и кириллицы, и латиницы, если они написаны заглавными буквами.
=СЧЁТ(НАЙТИ({"А":"Б":"В":"Г":"Д":"Е":"Ё":"Ж":"З":"И":"Й":"К":"Л":"М":"Н":"О":"П":"Р":"С":"Т":"У":"Ф":"Х":"Ц":"Ч":"Ш":"Щ":"Ъ":"Ы":"Ь":"Э":"Ю":"Я":"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"};A1))>0
Для поиска цифр в ячейке можно использовать такой же синтаксис.
Функции “Найти латиницу” и “Найти кириллицу” с помощью UDF
UDF (User-defined function, пользовательская функция) – тем, кто часто использует функции такого плана, помогут упростить синтаксис на листе, т.к. содержат калькуляции в коде.
Function найтиЛатиницу(txt As String) As Boolean
найтиЛатиницу = txt Like "*[A-z]*"
End Function
Function найтиКириллицу(txt As String) As Boolean
найтиКириллицу= txt Like "*[А-яЁё]*"
End Function
Найти латинские буквы в 2 клика
Максимально быстрый способ проверки на наличие латиницы в Excel доступен пользователям !SEMTools.
Порядок действий: скопировать диапазон, выделить скопированное и вызвать макрос в меню «Найти символы» группы «ОБНАРУЖИТЬ».
Найти слова, содержащие и кириллицу, и латиницу
Иногда простой поиск в ячейке латиницы и кириллицы не решает проблему, т.к. в ячейке изначально подразумевается наличие обоих видов символов. Например, “автомобиль Tоyоta”, “холодильник Siеmеns”. В двух этих примерах специально вставлены буквы из другого алфавита: Tоyоta содержит кириллическую “о”, а Siеmеns – кириллическую “e”. Начертание этих символов идентичное, но вот для роботов это совершенно разные символы.
Как с помощью Excel проверить отличие в написании букв на латинице или кириллице в отдельных словах? Формулы выше не отличат фразы, написанные корректно, от фраз, написанных некорректно, так как отдадут “ИСТИНА” всем фразам при проверке на кириллицу и латиницу.
Решить проблему можно, если искать по конкретным словам! В !SEMTools есть два решения этой задачи:
С помощью регулярных выражений
Процедура находится в меню “ОБНАРУЖИТЬ” – “Слова” – “По паттерну”. Паттерн REGEX позволяет решить задачу в один заход, т.к. в нем есть оператор “ИЛИ”.
Данное выражение означает, что нужно найти слова, в которых или после кириллического символа идет символ латиницы, или наоборот. При этом между символами могут быть внутри слова любые другие символы (цифры, дефисы и любые другие, кроме пробела).
([a-zA-Z].*[а-яА-ЯёЁ]|[а-яА-ЯёЁ].*[a-zA-Z])
Важно понимать, что сам паттерн применим к любой строке вне зависимости от количества слов в ней, но в рамках указанной процедуры !SEMTools применяется к отдельным словам.
В две итерации
Данный метод совершенно логичен, но требует чуть больше времени. Нужно просто сначала извлечь слова, содержащие латиницу, а потом, уже среди извлеченных этим способом, искать слова, содержащие кириллицу.
Кейсы дальнейшего взаимодействия с данными
Найти слова, содержащие кириллицу, латиницу или оба вида символов одновременно, – только полдела. За этапом их обнаружения зачастую следуют дальнейшие действия.
Удалить
Иногда нужно целиком удалить слова, содержащие латиницу. Дело в том, что в них могут находиться другие символы – цифры, кириллица, дефисы и другие знаки. Они останутся, если удалить из текста латиницу и ничего больше.
Извлечь
Можно захотеть извлечь латиницу. В !SEMTools это можно делать с помощью регулярных выражений, в том числе извлечь слова, содержащие латиницу, чтобы посчитать количество слов и посмотреть на их структуру. Из каталога товаров, например, быстро извлекать бренды, написанные на английском языке.
Изменить регистр
Бывают ситуации, когда слова, содержащие латиницу, имеет смысл сделать с заглавной буквы — это касается все тех же иностранных брендов.
Заменить символы
И, наконец, бывают ситуации, когда нужно заменить кириллицу на латиницу – но и здесь возможны вариации: можно транслитерировать, сменить раскладку или заменить символы на похожие с ними на другом языке. Подробнее про последний кейс: заменить русские буквы на английские и наоборот.
Про каждый из этих кейсов можно почитать с соответствующем разделе сайта, в надстройке присутствуют макросы для быстрой обработки подобных ситуаций.
Часто сталкиваетесь с этой или похожими задачами при работе в Excel?
!SEMTools поможет решить их быстро и легко!
Поиск символов латиницы в русском тексте
Одна из типовых ситуаций, с которой все мы однажды сталкиваемся: кто-то (возможно даже мы сами) при наборе текстовой информации в ячейку, случайно использовал английские буквы (латиницу) вместо русских (кириллицы). Допустить такую ошибку достаточно легко, особенно если учесть изощренное расположение некоторых символов в стандартной раскладке клавиатуры. Ну какому идиоту, скажите мне, пришло в голову помещать на одну клавишу две одинаковых по написанию буквы (английская “си” и русская “эс”)? Да и с другими символами не лучше. Но, как говорится, “фарш невозможно провернуть назад” – текущая раскладка давно стала стандартом и никуда от этого не деться.
Использование символов латиницы в русском тексте порождает огромное количество проблем. От путаницы при банальной сортировке по алфавиту до некорректной консолидации данных при автоматическом объединении нескольких таблиц в одну.
Выискивать похожие по виду символы и проверять не являются ли они символами английской раскладки крайне муторно. Поэтому поищем более изящные варианты…
Способ 1. Шрифт без кириллицы
Выделите диапазон ячеек с проверяемым текстом и временно установите для него любой шрифт не содержащий кириллицу, например Albertus или любой аналогичный (находится методом тыка). Внешний вид символов кириллицы и латиницы станет отличаться и можно будет легко визуально локализовать некорректные символы:
Способ 2. Функция IsLatin на VBA
Создадим пользовательскую функцию (назовем ее, например, IsLatin), которая будет проверять – присутствуют ли в заданной ячейке символы английского алфавита и выдавать в качестве результата логическое значение ИСТИНА или ЛОЖЬ.
Откройте редактор Visual Basic сочетанием клавиш ALT+F11 или в старых версиях Excel – через меню Сервис – Макрос – Редактор Visual Basic (Tools – Macro – Visual Basic Editor), вставьте новый модуль (меню Insert – Module) и скопируйте туда текст этой функции:
Public Function IsLatin(str As String) str = LCase(str) LatinAlphbet = "*[abcdefghijklmnopqrstuvwxyz]*" If str Like LatinAlphbet Then IsLatin = True Else IsLatin = False End If End Function
Закройте редактор Visual Basic и вернитесь в Excel.
Теперь в Мастере функций в категории Определенные пользователем (User Defined) можно найти нашу функцию IsLatin и воспользоваться ей. Синтаксис функции следующий:
=IsLatin(A2)
где для примера А2 – это адрес ячейки, содержащей текст
Функция выдаст значение ИСТИНА (TRUE), если найдет в тексте А2 хотя бы один символ латиницы. В противном случае функция вернет значение ЛОЖЬ (FALSE):
Способ 3. Подсветка символов латиницы красным цветом шрифта
Откройте редактор Visual Basic сочетанием клавиш ALT+F11 или в старых версиях Excel – через меню Сервис – Макрос – Редактор Visual Basic (Tools – Macro – Visual Basic Editor), вставьте новый модуль (меню Insert – Module) и скопируйте туда текст этого макроса:
Sub ShowLatin() For Each c In Selection For i = 1 To Len(c) If (Asc(Mid(c, i, 1)) >= 65 And Asc(Mid(c, i, 1)) <= 90) Or _ (Asc(Mid(c, i, 1)) >= 97 And Asc(Mid(c, i, 1)) <= 122) Then c.Characters(Start:=i, Length:=1).Font.ColorIndex = 3 End If Next i Next c End Sub
Закройте редактор Visual Basic и вернитесь в Excel. Если теперь выделить интересующий диапазон ячеек (только не весь столбец или лист – а то считать до конца дня будет!) и запустить наш макрос с помощью сочетания клавиш ALT+F8 или через меню Сервис – Макрос – Макросы (Tools – Macro – Macros), то символы латиницы выделятся красным цветом шрифта:
Ссылки по теме
- Подсветка латиницы с помощью надстройки PLEX
- Что такое макросы, куда вставлять код макроса, как их использовать
Как найти подмену символов латиницы на кириллицу и наоборот в тексте или программе
Поиск онлайн
Подсветка в тексте символов букв русской или английской раскладки
(выделение цветом латиницы или кириллицы) в онлайн режиме или
оффлайн окне браузера (JavaScript)
Сегодня потратил больше часа на поиск ошибки в уже работающей программе. Она стала напрочь отказываться работать, после введения довольно большого количества дополнительных поправок. После отключения режима ‘use strict’ что-то заработало, но неправильно, – стало ясно, что ошибка в переменной. но найти ее при проверке переменных так и не удалось… Пришлось постепенно откатывать введенные поправки (по закону подлости почти все), тут и обнаружилось что в одной из переменных “year” вместо “игрек” стояла наша русская “у”.
Решил, потрачу часик и сделаю программку подсветки символов, чтобы подобная напасть больше не повторялась. Часик вылился в вечерок, до поздней ночи, но своего я добился, теперь программа подсветки кириллических или латинских символов прямо в браузере, онлайн, у меня под рукой…
Поместил ее в копилке блога, может кому-то еще пригодится:
Подсветка в тексте символов букв русской или английской раскладки
Нужно выделить:
Латиницу
Кириллицу
Всего знаков: 175; знаков c пробелами: 172; знаков без пробелов: 147.
ВНИМАНИЕ! При перезагрузке страницы введенная информация не сохраняется!
– отключить подсветку чисел;
– включить подсветку чисел.
Для удобства работы можно открыть отдельно виджет подсветки символов различных раскладок
Полагаю, что поиск опечаток из-за ошибок переключения раскладки в обычном тексте, тоже может улучшить его качество, хотя здесь чаще всего помогает проверка правописания… А в Word есть еще некий экзотический шрифт, в котором латинские и кириллические символы разительно отличаются друг от друга (названия не помню, но когда-то пользовался…)
Если в тексте много специальных терминов, думаю, что лучше всего провериться здесь…
P.S. 17.04.2018 – Добавлен счетчик знаков в исходном тексте он расположен под боксом проверки символов (в боксе с подсветкой символов rus – eng раскладок знаки не подсчитываются).
“Все знаки” – учитываются все буквы, знаки препинания, пробелы и неотображаемые знаки табуляции;
“знаки с пробелами” – подсчитываются буквы, знаки препинания и пробелы;
“знаки без пробелов” – подсчитываются только буквы и знаки препинания.
В заключение хочется отметить: Важным премуществом предложенной здесь программы является тот факт, что обработка всех данных происходит исключительно на Вашем устройстве с помощью загруженного вместе со страницей безопасного Java Script кода, и вводимая в текст-бокс информация ни на какие сторонние серверы не отправляется, более того, при перезагрузке страницы она полностью стирается. Еще мне понравилась идея визуализации текстовых символов различного назначения и проведения на одной странице различных видов статистической обработки текста. Правда, пока она реализована как дополнение программы подсветки символов простейшим счетчиком знаков в том числе и неотображаемых табуляционных. В случае, если вам необходимая еще какая-то статистическая информация о символах в тексте, например, количество или частота букв “а” или “о”, пишите…
● Главная
▸ Статьи
▸ Блог
▸ Копилка
✔ Как найти подмену символов раскладки
How to check if a string contains [a-zA-Z]
characters only?
Example:
var str = '123z56';
asked Feb 8, 2013 at 23:44
1
No jQuery Needed
if (str.match(/[a-z]/i)) {
// alphabet letters found
}
answered Feb 8, 2013 at 23:47
jondavidjohnjondavidjohn
61.7k21 gold badges118 silver badges158 bronze badges
2
You can use regex:
/[a-z]/i.test(str);
The i
makes the regex case-insensitive. You could also do:
/[a-z]/.test(str.toLowerCase());
answered Feb 8, 2013 at 23:49
BlenderBlender
287k52 gold badges437 silver badges494 bronze badges
1
Ahh, found the answer myself:
if (/[a-zA-Z]/.test(num)) {
alert('Letter Found')
}
answered Feb 8, 2013 at 23:49
PHP NoobPHP Noob
1,5953 gold badges23 silver badges34 bronze badges
I’m surprised that the answers here got so many upvotes when none of them really answer the question. Here’s how to make sure that ONLY LATIN characters are in a given string.
const hasOnlyLetters = !!value.match(/^[a-z]*$/i);
The !!
takes transforms something that’s not boolean into a boolean value. (It’s exactly the same as applying a !
twice, and in fact you can use as many !
as you’d like to toggle the truthiness multiple times.)
As for the RegEx, here’s the breakdown.
/.../i
The delimiter is a/
and thei
means to assess the statement in a case-insensitive fashion.^...$
The^
means to look at the very beginning of a string. The$
means to look at the end of the string, and when used together, it means to consider the entire string. You can add more to the RegEx outside of these boundaries for things like appending/prepending a required suffix or prefix.[a-z]*
This part says to look for all lowercase letters. (The case-insensitive modifier means that we don’t need to look at uppercase letters, too.) The*
at the end says that we should match whats in the brackets any number of times. That way “abc” will match instead of just “a” or “b”, and so forth.
answered Jan 22, 2020 at 21:21
There is no jquery needed:
var matchedPosition = str.search(/[a-z]/i);
if(matchedPosition != -1) {
alert('found');
}
answered Feb 8, 2013 at 23:49
All these answers are correct, but I had to also check if the string contains other characters and Hebrew letters so I simply used:
if (!str.match(/^[d]+$/)) {
//contains other characters as well
}
answered Jan 27, 2019 at 9:45
Иногда в тексте, написанном на русском языке, может оказаться буква из английского алфавита, или наоборот – в английском тексте спрячется русская буква. Большинство сайтов, компьютерных программ и информационных систем никак не это не отреагируют. Но есть некоторые “уникальные” ресурсы, жестко требующие определенную раскладку.
Визуально невозможно отличить русские буквы А, Е, К, М, Н, О, Р, С, Т, В от английских A, E, K, M, H, O, P, C, T, B.
Также очень похожи русский заглавный мягкий знак – Ь и прописная английская буква b.
На этой странице можно проверить, есть ли в тексте символы из другой раскладки.
Нужно вставить скопированный текст в текстовое поле и указать раскладку, на которой данный текст написан – русскую или английскую.
В результате вы увидите под текстовым полем “чужие” буквы, написанные на другом языке.
Форма проверки наличия символов из другой раскладки
Выберите – на каком языке написан ваш текст:
английский
русский
Буквы на “неправильном” языке выделены красным (если есть такие):