Как-то столкнулся с подобной задачей... пришёл в голову такой вариант... Исследуемый текст в ячейке А1.
Формула массива: =ИЛИ(ABS(КОДСИМВ(ПСТР(ПРОПИСН(A1);СТРОКА(ИНДЕКС(C:C;1):ИНДЕКС(C:C;ДЛСТР(A1)));1))-{207,5;168})<{16;1})
Вместо столбца C:C можно можно подставить любой другой столбец.
Логика работы формулы такая:
1. Преобразуем все буквы в заглавные для упрощения.
2. Смещаемся на середину кодов заглавных букв русского языка. Поскольку подряд идущих символов 32 (буква Ё размещена в другом месте), то позиция середины - это 16,5. Прибавляем код первого символа минус единицу -- получаем 207,5 (=191 + 16,5).
3. Отнимаем от исследуемых кодов эту цифру (207,5). При этом, для букв от А до П результат будет отрицательный, для букв от Р до Я положительный.
5. Берём модуль и сравниваем результат с размером диапазона, делённым на два (16). Таким образом мы захватываем 32 буквы (по 16 сверху и снизу от середины 207,5)
6. Букву Ё формула проверит по тому же правилу. Её код 168, кол-во символов - один.
7. Если хоть одно из условий истинно, ИЛИ вернёт ИСТИНУ.
Для украинского языка (для включения букв Ґ, Є, Ї, І) если при этом не исключать из диапазона русские букв буквы Ъ,Э,Ы, константы будут такие:
... -{207,5;165;170;175;178})<{16;1;1;1;1})
В идеале, буквы Ъ, Ы, Э нужно исключать. Исключим их вместе с "Ь", поскольку их коды идут подряд, а "Ь" потом проверим отдельно:
... -{204,5;222,5;165;170;175;178;220})<{13;1;1;1;1;1;1})
Для того, чтобы проверить, есть ли в тексте цифры, формула массива будет такой: =ИЛИ(ABS(КОДСИМВ(ПСТР(ПРОПИСН(A1);СТРОКА(ИНДЕКС(B:B;1):ИНДЕКС(B:B;ДЛСТР(A1)));1))-52,5)<5)
Файл-пример прилагается.