Как найти все буквы прописные

  • Найти заглавные (прописные) символы латиницы
  • Найти заглавные (прописные) символы кириллицы
  • Найти прописные символы кириллицы или латиницы
  • Найти любые заглавные буквы
  • Найти любые строчные буквы
  • Инструмент “Обнаружить заглавные буквы” в !SEMTools

Поиск именованных сущностей — задача, встречающаяся во множестве профессий. Возникает там, где в текстовом массиве встречаются те или иные имена собственные. Это могут быть названия брендов, ФИО людей, географические названия (топонимы), названия организаций и другие наименования живых и неживых существ.

Все их объединяет простое правило: они пишутся с заглавной буквы, что одновременно становится и своеобразным маркером, позволяющим выделить эти единицы среди остального текста.

При работе с большими массивами данных часто бывает предпочтительнее сначала обнаружить среди ячеек те, что содержат наименования, и далее уже производить более “тяжёлые” операции:

  • массовую замену символов/слов;
  • извлечение текста с заглавными буквами — будь то слова или все содержимое ячейки;
  • удаление символов, слов, словосочетаний или всего содержимого ячеек.

Найти заглавные (прописные) символы латиницы

В Excel есть функция НАЙТИ — она регистрозависимая, что позволяет найти буквы в том регистре, в котором они перечислены. В сочетании с формулой массива эта функция возвращает позицию любого найденного символа из массива.

Поскольку в ASCII-таблице символов прописные английские буквы идут друг за другом по порядку с 65 по 90, можно использовать менее громоздкую формулу массива для их поиска:

{=СЧЁТ(НАЙТИ(СИМВОЛ(СТРОКА(65:90));A1))>0}

Данная формула вернет ИСТИНА, если в ячейке A1 есть хотя бы одна заглавная английская буква.

Важно: фигурные скобки в данном случае появляются сами, вводить их не нужно — нужно вводить формулу без них и использовать сочетание Ctrl + Shift + Enter.

Найти заглавные (прописные) символы кириллицы

Формула аналогична предыдущей, разница лишь в диапазоне символов — от 192 до 223:

{=СЧЁТ(НАЙТИ(СИМВОЛ(СТРОКА(192:223));A1))>0}

Есть пара замечаний к этой формуле:

  • Данный диапазон не включает в себя букву Ё;
  • Язык системы (Windows) должен быть русский, т.к. ASCII-таблица привязана именно к нему.

Найти прописные символы кириллицы или латиницы

Функция не отличается изящностью, но это лучшее, что предоставляет нам Excel в его базовой конфигурации. В зависимости от наличия в строке прописных букв функция возвращает ИСТИНА или ЛОЖЬ.

=СЧЁТ(НАЙТИ({"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

Можно решить задачу чуть более компактной формулой массива, совмещающей формулы выше:

{=СЧЁТ(НАЙТИ(СИМВОЛ(СТРОКА($192:$223));A1))+СЧЁТ(НАЙТИ(СИМВОЛ(СТРОКА($65:$90));A1))>0}

Найти любые заглавные буквы

Помимо кириллицы и латиницы есть и другие алфавиты. Не перечислять же их нам все — формулы будут гигантскими и ресурсозатратными.

Для поиска заглавных букв нам поможет логика, а именно использование функций СТРОЧН и СОВПАД, последняя из которых позволяет сравнивать значения по регистру.

Логика такова:

  1. Переведём значение в нижний регистр,
  2. Сравним результат с исходным,
  3. Если не совпадут, значит, хотя бы один символ был в верхнем регистре.

А вот и формула:

=НЕ(СОВПАД(СТРОЧН(A1);A1))

Найти любые строчные буквы

Формула аналогична той, что ищет символы в верхнем регистре. Единственное отличие — в ней используется функция ПРОПИСН. Вот формула:

=НЕ(СОВПАД(ПРОПИСН(A1);A1))

Чтобы не приходилось запоминать сложный синтаксис составных функций, можно пользоваться готовыми решениями. !SEMTools располагает набором подобных возможностей, включая и процедуру обнаружения заглавных букв.

Макрос находится в группе “Обнаружить” в первом меню “Символы”. Инструкция безумно проста:

  1. Скопируйте исходный столбец с данными в соседний,
  2. Оставив выделенным скопированный диапазон (иначе говоря, ничего больше не делая), выберите процедуру в меню “Обнаружить символы” —> “Заглавные”.

Как найти заглавные буквы в Excel

Как найти ячейки с большими буквами в Excel с помощью !SEMTools

Ячейки, содержащие заглавные буквы, заменятся на значение “ИСТИНА”, не содержащие их — на “ЛОЖЬ”. Далее можно фильтровать, сортировать, копировать и производить любые дальнейшие действия с маркированными таким образом данными.

Более подробную инструкцию по использованию функционала надстройки можно посмотреть в видео, где рассмотрены в том числе некоторые подводные камни.

Смотрите также похожие разделы:

  • Найти кириллицу и латиницу в Excel;
  • Регулярные выражения в Excel – найти, заменить, извлечь;
  • Изменить регистр букв в Excel.

Нужно найти заглавные или строчные буквы в Excel?
В !SEMTools есть это и сотни других готовых решений!

Роман интересуется:

Как в документе найти все слова, написанные прописными буквами? Причем, можно ли результаты поиска вывести вместе, или ворд будет переходить от слова к слову?

Можно воспользоваться следующим макросом, который мне помогли реализовать специалисты VBA с форума microsoft.public.word.vba.general.

Этот макрос позволяет найти в документе все слова, написанные прописными буквами, скопировать их в конец документа, отсортировать по алфавиту и удалить повторяющиеся слова. При этом, не затрагиваются односимвольные слова, типа О, И и так далее.

Обратите внимание, что макрос писал не я, по моей просьбе его составили специалисты с указанного выше форума. Тем не менее, я добавил в текст макроса свои поясняющие комментарии (для себя и тех, кому это может быть интересно в плане изучения опыта).

Sub UcaseList()
'Поиск в тексте слов с прописными буквами, копирование их в конец документа, сортировка и удаление повторяющихся
'Помощь от Jean-Guy Marcil и Graham Mayor
'http://groups.google.ru/group/microsoft.public.word.vba.general/
Dim rngDoc As Word.Range
Dim wu As Word.Range
Dim lngDocEnd As Long
Set rngDoc = ActiveDocument.Range
lngDocEnd = rngDoc.End
With ActiveDocument
   Selection.EndKey Unit:=wdStory  'переходим в конец документа
   Selection.TypeParagraph   'вставляем параграф
   .Bookmarks.Add Range:=Selection.Range, Name:="ListStart"   'вставляем закладку
   'для каждого слова проверяем его регистр и если есть слова с прописными буквами, добавляем их в конец документа
   For Each wu In rngDoc.Words
      If wu.Case = wdUpperCase Then
         .Range.InsertAfter vbCrLf & wu.Text
         rngDoc.End = lngDocEnd
      End If
   Next wu
   .Bookmarks("ListStart").Select  'выбираем закладку, выделяем все слова, что идут ниже ее, и сортируем их по алфавиту
   With Selection
      .EndKey Unit:=wdStory, Extend:=wdExtend
      .Sort , FieldNumber:="Paragraphs", _
      SortFieldType:=wdSortFieldAlphanumeric, _
      SortOrder:=wdSortOrderAscending
      'с отсортированными словами
      With .Find
         .ClearFormatting
         .Replacement.ClearFormatting
      'удаляем пробелы после слов
         .Text = "[ ](^13)"
         .Replacement.Text = "1"
         .MatchWildcards = True
         .Execute Replace:=wdReplaceAll
      'удаляем лишние концы абзацев
         .Text = "(*^13)@"
         .Replacement.Text = "1"
         .MatchWildcards = True
         .Execute Replace:=wdReplaceAll
      'ищем повторяющиеся слова и удаляем их
         .Text = "([!A-Z-А-ЯЁ])[A-Z-А-ЯЁ]^13"
         .Replacement.Text = "1"
         .Execute Replace:=wdReplaceAll
      End With
   End With
End With
End Sub

Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:

Создание макроса из готового кода

Автоматическая запись макроса

Студворк — интернет-сервис помощи студентам

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void poisk()
        {
            textBox2.Text = " ";
            string[] s = stroka1.Text.Split(new string[] { "rn" }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < s.Length; i++)
            {
                for (int j = 0; j < s[i].Length; j++)
                {
                    
                    if (s[i][j].ToString() == s[i][j].ToString().ToUpper())
                    {
                            textBox2.Text = textBox2.Text + s[i][j];
                            textBox2.Text = textBox2.Text.Replace(',', ' ');
                          
                    }
                }
            }
          }

1)Этот код находит все заглавные буквы в тексте и выводит в новое окно. Но мне нужно найти только сокращения. Например ОАО или СМС или ТУ. Кароче говоря, все, что больше одной буквы. Но этот код берет и одиночные тоже.
Если добавляю условие типа if (s[i][j].ToString() == s[i][j].ToString().ToUpper() && s[i][j+1].ToString() == s[i][j+1].ToString().ToUpper() ) то получаю ошибку из за того что он пытается взять вне диапазона массива. Если в условии
for (int j = 0; j < s[i].Length; j++) делаю for (int j = 0; j < s[i].Length-1; j++) , то он перестает брать весь текст.
Весь день пытаюсь это исправить.

2)Так же если у меня будет заканчиваться строка на заглавную букву и начинаться, то он выстроит ее как одно слово. Например:
Катя гуляла по МКАД
Все заценили наряд.
После прогонки такого сообщения найдет “К МКАДВ”

3) Лишние символы типа запятых найденных через .ToUpper() я убираю командами .Replace. Так же у меня есть код прогонки через массив БУКВ, но когда я прогоняю через него, то он выводит все без пробелов. Например
Бабушка из России жалуется на США
Выведет: БРСША. Конечно как вариант можно добавить пробел с массив нужных символов, но суть не в этом.
Replace-ом можно убрать запятые , точки и тд, но вот как убрать например знак °С вот такой .

Спасибо

Виктория Петрова



Ученик

(166),
закрыт



2 года назад

Как в Word найти все слова, написанные заглавными буквами?
Необходимо для создания макроса, а именно – такие слова нужно найти, выделить и перенести на новую строку.

Николай Шмаков 三十

Искусственный Интеллект

(107466)


3 года назад

Есть такая фишка.
То есть, если это для автоматического форматирования стихов, то следует учесть, что все имена собственные (Маши, Саши, Даши) пойдут в начало строки. Слово с заглавной не имеющее перед собой пробела не будет перенесено. А, именно « “Абракадабра» не переннесётся. Поэтому придётся повторить вручную левых кавычек. Либо по этой маске: (<“)

 

Добрый вечер, уважаемые форумчане!  

  Может кто знает как из текстовой строки извлечь слова, написанные прописными буквами?  

    С уважением,    
Василий.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Вам только название нужно? Если в нем встретятся строчные? Если прописные будут не только в этом слове?

 

{quote}{login=vikttur}{date=16.12.2009 01:10}{thema=}{post}Вам только название нужно? Если в нем встретятся строчные? Если прописные будут не только в этом слове?{/post}{/quote}  

  Строчные не встретятся. А вот прописные буквы могут быть в начале строки. Но с этим я справлюсь.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Показываем второе слово:  
=ПСТР(B5;НАЙТИ(” “;B5)+1;НАЙТИ(” “;B5;НАЙТИ(” “;B5)+1)-НАЙТИ(” “;B5)-1)  
Или нужно именно “прописное” в любом месте текста?

 

{quote}{login=vikttur}{date=16.12.2009 01:25}{thema=}{post}Показываем второе слово:  
=ПСТР(B5;НАЙТИ(” “;B5)+1;НАЙТИ(” “;B5;НАЙТИ(” “;B5)+1)-НАЙТИ(” “;B5)-1)  
Или нужно именно “прописное” в любом месте текста?{/post}{/quote}  

  Да, в любом месте текста. Эти прописные слова идут в 99 % одно за другим.

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

Прописные русские или латиница?  
Идут непрерывно? Т.е. “Мандарины МАДАГАСКАРСКИЕ высший СОРТ” не будет? и что делать первой буквой в слове “Мандарины”? А так быть не может: “Мандарины МАДАГАСКАРСКИЕ Высший Сорт”?  
>>Эти прописные слова идут в 99 % одно за другим.  
т.е. между словами может быть пробел?  

    Видите, как с текстом сложно…

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

Вот формула, которая берет все что между первой и последней прописной.  
Только русские.  
ф-ла массива, вводится стрл+шифт+ентер

 

{quote}{login=Лузер™}{date=16.12.2009 01:44}{thema=}{post}Прописные русские или латиница?  
Идут непрерывно? Т.е. “Мандарины МАДАГАСКАРСКИЕ высший СОРТ” не будет? и что делать первой буквой в слове “Мандарины”? А так быть не может: “Мандарины МАДАГАСКАРСКИЕ Высший Сорт”?  
>>Эти прописные слова идут в 99 % одно за другим.  
т.е. между словами может быть пробел?  

    Видите, как с текстом сложно…{/post}{/quote}  

  Тогда давайте ограничимся 3 вариантами. Они в файле.    
ПС: а ведь есть формула,которая вытаскивает слова целиком?

 

Sh_Alex

Пользователь

Сообщений: 732
Регистрация: 01.01.1970

Пользовательская функция выбирает все прописные буквы из ячейки, за исключением первой.  
С уважением, Александр.

 

{quote}{login=Лузер™}{date=16.12.2009 01:54}{thema=}{post}Вот формула, которая берет все что между первой и последней прописной.  
Только русские.  
ф-ла массива, вводится стрл+шифт+ентер{/post}{/quote}  

  Да. работает формула. Единственное что приходится – убирать прописные буквы в первых словах.    

  Если это конечный вариант, то тему можно закрывать.

 

{quote}{login=Sh_Alex}{date=16.12.2009 01:59}{thema=}{post}Пользовательская функция выбирает все прописные буквы из ячейки, за исключением первой.  
С уважением, Александр.{/post}{/quote}  

    Благодарю!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Добейте, мне некогда:  
=ПСТР(B5;ПОИСКПОЗ(0;ЕСЛИ(КОДСИМВ(ПСТР(ПОДСТАВИТЬ(B5;” “;”я”);СТРОКА(2:100);1))>223;СТРОКА(2:100);0);0)+1;100)  
Формула массива. Нужно определить длину извлекаемого (в формуле стоит 100).

 

{quote}{login=vikttur}{date=16.12.2009 02:04}{thema=}{post}Добейте, мне некогда:  
=ПСТР(B5;ПОИСКПОЗ(0;ЕСЛИ(КОДСИМВ(ПСТР(ПОДСТАВИТЬ(B5;” “;”я”);СТРОКА(2:100);1))>223;СТРОКА(2:100);0);0)+1;100)  
Формула массива. Нужно определить длину извлекаемого (в формуле стоит 100).{/post}{/quote}  

  Спасибо огромное!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#14

17.12.2009 10:12:34

Полная формула:  
=ПСТР(B5;ПОИСКПОЗ(0;ЕСЛИ(КОДСИМВ(ПСТР(ПОДСТАВИТЬ(B5;” “;”я”);СТРОКА(ДВССЫЛ(“2:”&ДЛСТР(B5)));1))>223;СТРОКА(ДВССЫЛ(“2:”&ДЛСТР(B5)));0);0)+1;СУММ((КОДСИМВ(ПСТР(ПОДСТАВИТЬ(B5;” “;”я”);СТРОКА(ДВССЫЛ(“2:”&ДЛСТР(B5)));1))<224)*1))  
Находит первую прописную (без учета самой первой в текстовой строке) и показывает количество символов, равное количеству прописных (опять же, без учета первой).

Добавить комментарий