Как найти схожие значения в тексте

Поиск ближайшего похожего текста

Если в слове «хлеб» сделать четыре ошибки,
то получится слово «пиво»!

Имеем два списка. И в том и в другом примерно одни и те же элементы, но записаны они могут быть немного по-разному. Задача — подобрать к каждому элементу в первом списке максимально похожий элемент из второго списка, т.е. реализовать поиск ближайшего максимально похожего текста.

Большой вопрос, в данном случае, что считать критерием «похожести». Просто количество совпадающих символов? Или количество идущих подряд совпадений? Учитывать ли регистр символов или пробелы? Различные положения слов во фразе? Вариантов много и однозначного решения нет — для каждой ситуации тот или иной будет предпочтительнее остальных.

Если следовать принципу Оккама и не усложнять без надобности, то с помощью небольшой макрофункции на VBA можно реализовать самый очевидный вариант — поиск по максимальному количеству совпадений символов. Он не идеален, но для большинства ситуаций работает вполне надежно:

Поиск ближайшего похожего текста

Чтобы добавить такую пользовательскую функцию, сначала войдем в редактор Visual Basic (вкладка Разработчик — Visual Basic или Alt+F11) и добавим туда новый модуль через меню Insert — Module. Затем в получившийся пустой модуль надо скопировать вот такой код нашей функции:

Function FuzzyLookup(Lookup_Value As String, Tbl As Range) As String
Dim cell As Range, txt As String, p As Integer, pos As Integer, maxp As Integer, maxstr As String

    For Each cell In Tbl    'перебираем все ячейки в таблице
        txt = cell
        p = 0
        For i = 1 To Len(Lookup_Value)  'проходим по символам в искомом тексте
            pos = InStr(1, txt, Mid(Lookup_Value, i, 1), vbTextCompare)   'ищем вхождение
            If pos > 0 Then
                p = p + 1       'увеличиваем счетчик совпадений
                txt = Left(txt, pos - 1) & Right(txt, Len(txt) - pos)   'убираем найденный символ из текста
            End If
        Next i
        If p > maxp Then    'запоминаем наилучшее совпадение
            maxp = p
            maxstr = cell
        End If
    Next cell
    FuzzyLookup = maxstr
End Function

Теперь можно закрыть редактор и вернуться в Excel. В мастере функций на вкладке Формулы — Вставить функцию (Formulas — Insert Function) в категории Пользовательские (User defined) появится наша новая функция FuzzyLookup, которую можно использовать со следующими аргументами:

=FuzzyLookup(текст_который_ищем; диапазон_поиска)

Т.е. в показанном выше примере в ячейку B2 надо ввести

=FuzzyLookup(A2;$D$2:$D$22)

и скопировать формулу на весь столбец.

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

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

Ссылки по теме

  • Проверка текста по маске (на соответствие шаблону)
  • Поиск символов латиницы в русском тексте

Простой алгоритм для поиска всех совпадающих под-текстов в двух текстах

Время на прочтение
4 мин

Количество просмотров 28K

По долгу службы мне часто нужно находить все пересечения между текстами (например, все цитаты из одного текста в другом). Я достаточно долго искал стандартное решение, которое бы позволило бы это делать, но найти его мне так и не удалось — обычно решается какая-то совсем или немного другая задача. Например, класс SequenceMatcher из difflib в стандартной библиотеке Питона находит самую длинную общую подпоследовательность в двух последовательностях hashable элементов, а потом рекурсивно повторяет поиск слева и справа от нее. Если в одном из текстов будет более короткая подпоследовательность, которая содержится внутри уже найденной (например, если кусок длинной цитаты где-то был повторен еще раз), он ее пропустит. Кроме того, когда я загнал в него «Войну и мир» и «Анну Каренину» в виде списков слов и попросил для начала найти самую длинную подпоследовательность, он задумался на семь минут; когда я попросил все совпадающие блоки, он ушел и не вернулся (в документации обещают среднее линейное время, но что-то в прозе Льва Толстого, по-видимому, вызывает к жизни worst-case квадратичное).

В конечном итоге я придумал свой алгоритм, тем самым наверняка изобретя велосипед, который надеюсь увидеть в комментариях. Алгоритм делает ровно то, что мне нужно: находит все совпадающие последовательности слов в двух текстах (за исключением тех, что в обоих текстах входят в состав более крупных совпадающих последовательностей) и сравнивает «Войну и мир» с «Анной Карениной» за минуту.

Принцип следующий: сначала из каждого текста извлекаются все биграммы и создается хэш-таблица, где для каждой биграммы указан ее порядковый номер. Затем берется более короткий текст, его биграммы перебираются в любом порядке, и если какая-то из них есть в словаре для второго текста, то в отдельно созданный массив добавляются все пары вида (№ биграммы из первого словаря, № биграммы из второго словаря). Например, если в тексте 1 биграмма «А Б» встречается на позициях 1, 2 и 3, а во втором тексте она же встречается на позициях 17, 24 и 56, в массив попадут пары (1, 17), (1, 24), (1, 56), (2, 17)… Это самое слабое место алгоритма: если оба текста состоят из одинаковых слов, то в массив попадет n на m пар цифр. Такие тексты, однако, нам вряд ли попадутся (алгоритм ориентирован на тексты на естественном языке), а чтобы снизить количество бессмысленных совпадений, можно заменить биграммы на любые n-граммы (в зависимости того, какие минимальные совпадения нужны) или выкинуть частотные слова.

Каждая пара цифр в массиве — это совпадение на уровне биграммы. Теперь нам надо получить оттуда совпадающие последовательности, причем если у нас есть совпадение вида «А Б Б В», то тот факт, что ровно эти же фрагменты текста совпадают по «А Б», «Б Б» и «Б В» т. д. надо проигнорировать. Все это очень легко сделать за линейное время при помощи умеренно нетривиальной структуры данных — упорядоченного множества. Оно должно уметь помещать в себя и выкидывать из себя элементы за константное время и помнить, в каком порядке элементы в него добавлялись. Имплементация такого множества для Питона есть здесь: code.activestate.com/recipes/576694-orderedset Для наших нужд оно должно уметь выплевывать из себя элементы не только из конца, но и из начала. Добавляем туда сделанный на скорую руку метод popFirst:

def popFirst(self):
        if not self:
            raise KeyError('set is empty')
        for item in self:
            i = item
            break
        self.discard(i)
        return i

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

Код на Питоне без OrderedSet и с биграммами. compareTwoTexts сразу возвращает результат. Чтобы по номерам биграмм понять, какие именно фрагменты текста совпадают, нужно отдельно сделать словарь биграмм и из него обратный словарь (extractNGrams, getReverseDic) или просто взять список слов (extractWords): каждая биграмма начинается со слова, стоящего в той же позиции, что и она сама.

from OrderedSet import OrderedSet

russianAlphabet = {'й', 'ф', 'я', 'ц', 'ы', 'ч', 'у', 'в', 'с', 'к', 'а', 'м', 'е', 'п', 'и', 'н', 'р', 'т', 'г', 'о', 'ь', 'ш', 'л', 'б', 'щ', 'д', 'ю', 'з', 'ж', 'х', 'э', 'ъ', 'ё'}

def compareTwoTexts(txt1, txt2, alphabet = russianAlphabet):
    # txt1 should be the shorter one
    ngramd1 = extractNGrams(txt1, alphabet)
    ngramd2 = extractNGrams(txt2, alphabet)
    return extractCommonPassages(getCommonNGrams(ngramd1, ngramd2))

def extractNGrams(txt, alphabet):
    words = extractWords(txt, alphabet)
    ngrams = []
    for i in range(len(words)-1):
        ngrams.append(
            (words[i] + ' ' + words[i+1], i)
            )
    ngramDic = {}
    for ngram in ngrams:
        try:
            ngramDic[ngram[0]].append(ngram[1])
        except KeyError:
            ngramDic[ngram[0]] = [ngram[1]]
    return ngramDic

def extractWords(s, alphabet):
    arr = []
    temp = []
    for char in s.lower():
        if char in alphabet or char == '-' and len(temp) > 0:
            temp.append(char)
        else:
            if len(temp) > 0:
                arr.append(''.join(temp))
                temp = []
    if len(temp) > 0:
        arr.append(''.join(temp))
    return arr

def getReverseDic(ngramDic):
    reverseDic = {}
    for key in ngramDic:
        for index in ngramDic[key]:
            reverseDic[index] = key
    return reverseDic

def getCommonNGrams(ngramDic1, ngramDic2):
    # ngramDic1 should be for the shorter text
    allCommonNGrams = []
    for nGram in ngramDic1:
        if nGram in ngramDic2:
            for i in ngramDic1[nGram]:
                for j in ngramDic2[nGram]:
                    allCommonNGrams.append((nGram, i, j))
    allCommonNGrams.sort(key = lambda x: x[1])
    commonNGramSet = OrderedSet((item[1], item[2]) for item in allCommonNGrams)
    return commonNGramSet

def extractCommonPassages(commonNGrams):
    if not commonNGrams:
        raise ValueError('no common ngrams')
    commonPassages = []
    temp = []
    while commonNGrams:
        if not temp:
            temp = [commonNGrams.popFirst()]
            if not commonNGrams:
                break
        if (temp[-1][0]+1, temp[-1][1]+1) in commonNGrams:
            temp.append((temp[-1][0]+1, temp[-1][1]+1))
            commonNGrams.discard((temp[-1][0], temp[-1][1]))
        else:
            commonPassages.append(temp)
            temp = []
    if temp:
        commonPassages.append(temp)
    return commonPassages

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

Как работает поиск слов и фраз в тексте

Скопируйте в первое поле проверяемый текст, а во втором поле укажите все слова и фразы по одной на строку, после чего нажмите кнопку «Найти». Чтобы найти слова в документе или на странице сайта, скопируйте весь текст в поле для проверки.

По умолчанию система ищет только точные совпадения с указанной строкой (с учетом знаков препинания).

Например, по строке «номер» будет найдено слово «номер», но не будут найдены слова «номерной» или «госномер». Аналогично, при поиске по фразе «легкий завтрак» будет найдена только фраза «легкий завтрак», но не будут найдены фразы «легким завтраком» или «легкий, завтрак».

Чтобы задать поиск по маске, используйте символ звездочки * в начале, в конце или с обеих сторон каждого слова:

  • ра* — будут найдены все слова, начинающиеся на «ра», в том числе слово «ра»: работа, разный, рад.
  • *ет — будут найдены все слова, заканчивающиеся на «ет», в том числе слово «ет»: работает, полет, нет.
  • *ой* — будут найдены все слова, содержащие буквосочетание «ой» в любом месте: ойкнул, водопой, спокойствие.

Маску можно указать для одного или нескольких слов во фразе, правила будут применяться последовательно:

  • ра* *ет — будут найдены фразы только из двух рядом стоящих слов, первое из которых начинается на «ра», а второе заканчивается на «ет»: рабочий совет, но не будут найдены фразы «свет комет» или «равная опора».

Также можно найти все вхождения любой заданной последовательности символов в тексте — для этого необходимо добавить символ ! в начале и конце строки.

Например, по запросу !дом! будут найдены вхождения этого буквосочетания в словах «дом», «домашний», «одомашненный» и т. д., но выделены будут именно вхождения, а не слова целиком, в отличие от режима поиска по маске с символом *.

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

Проверять текст можно неограниченное количество раз — после его редактирования или изменения списка слов нажмите повторно кнопку «Найти» и система покажет результаты новой проверки.

Возможности сервиса:

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

На чтение 10 мин Просмотров 15.7к. Опубликовано 31.07.2020

Содержание

  1. 5 thoughts on “ «ВПР» по частичному совпадению ”
  2. Проверяем условие для полного совпадения текста.
  3. ЕСЛИ + СОВПАД
  4. Использование функции ЕСЛИ с частичным совпадением текста.
  5. ЕСЛИ + ПОИСК
  6. ЕСЛИ + НАЙТИ
  7. Примеры использования функции ПОИСКПОЗ в Excel
  8. Формула для поиска неточного совпадения текста в Excel
  9. Сравнение двух таблиц в Excel на наличие несовпадений значений
  10. Поиск ближайшего большего знания в диапазоне чисел Excel
  11. Особенности использования функции ПОИСКПОЗ в Excel

Спустя катастрофически большой промежуток времени с момента публикации моего последнего поста, решил поделиться супер крутой, на мой взгляд, Excel-формулой, узнав о которой, начинаешь удивляться, как же раньше-то я жил без нее. Но, должен сказать, авторство ее создания не мое, а вероятнее всего принадлежит англоязычному ресурсу, о котором я скажу ниже.
Кто более-менее часто работает с массивами данных в Excel почти наверняка знает про функцию ВПР (см. мою статью) или ИНДЕКС+ПОИСКПОЗ, которые решают достаточно частую задачу по объединению двух наборов данных по каким-либо совпадающим значениям. И действительно, использование этих функций решает задачи по сопоставлению и объединению данных в 90% случаев. Если бы не одно но — данные, по которым производится объединение, действительно должны именно совпадать. Но бывают случаи, когда требуется сопоставление по частичному совпадению. Да, в ВПР есть поиск по приблизительному совпадению, но работает он не совсем прозрачно, а потому предугадать, почему было подобрано одно похожее слово, а не другое, может быть невозможно не просто. Как вы поняли, эту прелюдию я затеял не просто так, а для того, чтобы рассказать, как же решить такую задачу при помощи Excel.
Предположим, у нас есть список товаров, которые надо как-то сгруппировать:

5 thoughts on “ «ВПР» по частичному совпадению ”

На форуме SQL.ru мне подсказали еще одно очень изящное решение этой задачи, посмотреть его можно здесь:
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&t > Спасибо большое, Казанский (автор совета)!

Игорь, спасибо Вам огромное за эту «бронебойную» формулу. Весь интернет «перелопатила» в поиске решения своей задачи и только Вы мне помогли на 100%. Всё работает как часики. Удачи Вам, успешной работы и ещё больше таких гениальных решений.

Ольга, спасибо большое за Ваш комментарий! Справедливости ради надо сказать, что идея этой формулы не моя, а обнаружил я ее на сайте Exceljet

Игорь, добрый день!
Формула прекрасная, но есть ли какая-нибудь ее вариация, которая может находить и подставлять несколько значений сразу?
Например, в строке указаны два производителя холодильников, LG и Samsung
Можно ли вывести их в ячейку через запятую?

Добрый день, Артём!
Спасибо за ваш комментарий и прошу прощения за медленный ответ. Вопрос интересный, но с ходу у меня на него ответа, увы, нет, а по времени довольно сильно ограничен. Если будет свободное время, попробую поломать голову на эту тему

Рассмотрим использование функции ЕСЛИ в Excel в том случае, если в ячейке находится текст.

Будьте особо внимательны в том случае, если для вас важен регистр, в котором записаны ваши текстовые значения. Функция ЕСЛИ не проверяет регистр – это делают функции, которые вы в ней используете. Поясним на примере.

Проверяем условие для полного совпадения текста.

Проверку выполнения доставки организуем при помощи обычного оператора сравнения «=».

=ЕСЛИ(G2=»выполнено»,ИСТИНА,ЛОЖЬ)

При этом будет не важно, в каком регистре записаны значения в вашей таблице.

Если же вас интересует именно точное совпадение текстовых значений с учетом регистра, то можно рекомендовать вместо оператора «=» использовать функцию СОВПАД(). Она проверяет идентичность двух текстовых значений с учетом регистра отдельных букв.

Вот как это может выглядеть на примере.

Обратите внимание, что если в качестве аргумента мы используем текст, то он обязательно должен быть заключён в кавычки.

ЕСЛИ + СОВПАД

В случае, если нас интересует полное совпадение текста с заданным условием, включая и регистр его символов, то оператор «=» нам не сможет помочь.

Но мы можем использовать функцию СОВПАД (английский аналог — EXACT).

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

Формула проверки выполнения заказа в столбце Н может выглядеть следующим образом:

Как видите, варианты «ВЫПОЛНЕНО» и «выполнено» не засчитываются как правильные. Засчитываются только полные совпадения. Будет полезно, если важно точное написание текста — например, в артикулах товаров.

Использование функции ЕСЛИ с частичным совпадением текста.

Выше мы с вами рассмотрели, как использовать текстовые значения в функции ЕСЛИ. Но часто случается, что необходимо определить не полное, а частичное совпадение текста с каким-то эталоном. К примеру, нас интересует город, но при этом совершенно не важно его название.

Первое, что приходит на ум – использовать подстановочные знаки «?» и «*» (вопросительный знак и звездочку). Однако, к сожалению, этот простой способ здесь не проходит.

ЕСЛИ + ПОИСК

Нам поможет функция ПОИСК (в английском варианте – SEARCH). Она позволяет определить позицию, начиная с которой искомые символы встречаются в тексте. Синтаксис ее таков:

=ПОИСК(что_ищем, где_ищем, начиная_с_какого_символа_ищем)

Если третий аргумент не указан, то поиск начинаем с самого начала – с первого символа.

Функция ПОИСК возвращает либо номер позиции, начиная с которой искомые символы встречаются в тексте, либо ошибку.

Но нам для использования в функции ЕСЛИ нужны логические значения.

Здесь нам на помощь приходит еще одна функция EXCEL – ЕЧИСЛО. Если ее аргументом является число, она возвратит логическое значение ИСТИНА. Во всех остальных случаях, в том числе и в случае, если ее аргумент возвращает ошибку, ЕЧИСЛО возвратит ЛОЖЬ.

В итоге наше выражение в ячейке G2 будет выглядеть следующим образом:

Еще одно важное уточнение. Функция ПОИСК не различает регистр символов.

ЕСЛИ + НАЙТИ

В том случае, если для нас важны строчные и прописные буквы, то придется использовать вместо нее функцию НАЙТИ (в английском варианте – FIND).

Синтаксис ее совершенно аналогичен функции ПОИСК: что ищем, где ищем, начиная с какой позиции.

Изменим нашу формулу в ячейке G2

То есть, если регистр символов для вас важен, просто замените ПОИСК на НАЙТИ.

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

Функция ПОИСКПОЗ в Excel используется для поиска точного совпадения или ближайшего (меньшего или большего заданному в зависимости от типа сопоставления, указанного в качестве аргумента) значения заданному в массиве или диапазоне ячеек и возвращает номер позиции найденного элемента.

Примеры использования функции ПОИСКПОЗ в Excel

Например, имеем последовательный ряд чисел от 1 до 10, записанных в ячейках B1:B10. Функция =ПОИСКПОЗ(3;B1:B10;0) вернет число 3, поскольку искомое значение находится в ячейке B3, которая является третьей от точки отсчета (ячейки B1).

Данная функция удобна для использования в случаях, когда требуется вернуть не само значение, содержащееся в искомой ячейке, а ее координату относительно рассматриваемого диапазона. В случае использования для констант массивов, которые могут быть представлены как массивы элементов «ключ» — «значение», функция ПОИСКПОЗ возвращает значение ключа, который явно не указан.

Например, массив <«виноград»;»яблоко»;»груша»;»слива»>содержит элементы, которые можно представить как: 1 – «виноград», 2 – «яблоко», 3 – «груша», 4 – «слива», где 1, 2, 3, 4 – ключи, а названия фруктов – значения. Тогда функция =ПОИСКПОЗ(«яблоко»;<«виноград»;»яблоко»;»груша»;»слива»>;0) вернет значение 2, являющееся ключом второго элемента. Отсчет выполняется не с 0 (нуля), как это реализовано во многих языках программирования при работе с массивами, а с 1.

Функция ПОИСКПОЗ редко используется самостоятельно. Ее целесообразно применять в связке с другими функциями, например, ИНДЕКС.

Формула для поиска неточного совпадения текста в Excel

Пример 1. Найти позицию первого частичного совпадения строки в диапазоне ячеек, хранящих текстовые значения.

Вид исходной таблицы данных:

Для нахождения позиции текстовой строки в таблице используем следующую формулу:

Из полученного значения вычитается единица для совпадения результата с id записи в таблице.

Сравнение двух таблиц в Excel на наличие несовпадений значений

Пример 2. В Excel хранятся две таблицы, которые на первый взгляд кажутся одинаковыми. Было решено сравнить по одному однотипному столбцу этих таблиц на наличие несовпадений. Реализовать способ сравнения двух диапазонов ячеек.

Вид таблицы данных:

Для сравнения значений, находящихся в столбце B:B со значениями из столбца A:A используем следующую формулу массива (CTRL+SHIFT+ENTER):

Функция ПОИСКПОЗ выполняет поиск логического значения ИСТИНА в массиве логических значений, возвращаемых функцией СОВПАД (сравнивает каждый элемент диапазона A2:A12 со значением, хранящимся в ячейке B2, и возвращает массив результатов сравнения). Если функция ПОИСКПОЗ нашла значение ИСТИНА, будет возвращена позиция его первого вхождения в массив. Функция ЕНД возвратит значение ЛОЖЬ, если она не принимает значение ошибки #Н/Д в качестве аргумента. В этом случае функция ЕСЛИ вернет текстовую строку «есть», иначе – «нет».

Чтобы вычислить остальные значения «протянем» формулу из ячейки C2 вниз для использования функции автозаполнения. В результате получим:

Как видно, третьи элементы списков не совпадают.

Поиск ближайшего большего знания в диапазоне чисел Excel

Пример 3. Найти ближайшее меньшее числу 22 в диапазоне чисел, хранящихся в столбце таблицы Excel.

Вид исходной таблицы данных:

Для поиска ближайшего большего значения заданному во всем столбце A:A (числовой ряд может пополняться новыми значениями) используем формулу массива (CTRL+SHIFT+ENTER):

Функция ПОИСКПОЗ возвращает позицию элемента в столбце A:A, имеющего максимальное значение среди чисел, которые больше числа, указанного в ячейке B2. Функция ИНДЕКС возвращает значение, хранящееся в найденной ячейке.

Для поиска ближайшего меньшего значения достаточно лишь немного изменить данную формулу и ее следует также ввести как массив (CTRL+SHIFT+ENTER):

Особенности использования функции ПОИСКПОЗ в Excel

Функция имеет следующую синтаксическую запись:

=ПОИСКПОЗ( искомое_значение;просматриваемый_массив; [тип_сопоставления])

  • искомое_значение – обязательный аргумент, принимающий текстовые, числовые значения, а также данные логического и ссылочного типов, который используется в качестве критерия поиска (для сопоставления величин или нахождения точного совпадения);
  • просматриваемый_массив – обязательный аргумент, принимающий данные ссылочного типа (ссылки на диапазон ячеек) или константу массива, в которых выполняется поиск позиции элемента согласно критерию, заданному первым аргументом функции;
  • [тип_сопоставления] – необязательный для заполнения аргумент в виде числового значения, определяющего способ поиска в диапазоне ячеек или массиве. Может принимать следующие значения:
  1. -1 – поиск наименьшего ближайшего значения заданному аргументом искомое_значение в упорядоченном по убыванию массиве или диапазоне ячеек.
  2. 0 – (по умолчанию) поиск первого значения в массиве или диапазоне ячеек (не обязательно упорядоченном), которое полностью совпадает со значением, переданным в качестве первого аргумента.
  3. 1 – Поиск наибольшего ближайшего значения заданному первым аргументом в упорядоченном по возрастанию массиве или диапазоне ячеек.
  1. Если в качестве аргумента искомое_значение была передана текстовая строка, функция ПОИСКПОЗ вернет позицию элемента в массиве (если такой существует) без учета регистра символов. Например, строки «МоСкВа» и «москва» являются равнозначными. Для различения регистров можно дополнительно использовать функцию СОВПАД.
  2. Если поиск с использованием рассматриваемой функции не дал результатов, будет возвращен код ошибки #Н/Д.
  3. Если аргумент [тип_сопоставления] явно не указан или принимает число 0, для поиска частичного совпадения текстовых значений могут быть использованы подстановочные знаки («?» — замена одного любого символа, «*» — замена любого количества символов).
  4. Если в объекте данных, переданном в качестве аргумента просматриваемый_массив, содержится два и больше элементов, соответствующих искомому значению, будет возвращена позиция первого вхождения такого элемента.

Как в ворде найти повторы

Как найти повторяющиеся слова в Microsoft Word — Вокруг-Дом — 2021

Table of Contents:

Утилита Microsoft Word Find and Replace — это мощный инструмент, который позволяет пользователям быстро искать в своих документах определенные слова и фразы. Другое использование этого инструмента — найти повторяющиеся слова в тексте, используя опцию выделения, которая отображает повторяющиеся слова, так что вы можете легко просматривать и редактировать текст, чтобы исключить повторение слов.

Шаг 1

Откройте меню «Поиск» на вкладке «Главная» ленты и выберите «Расширенный поиск».

Шаг 2

Введите слово, в котором вы хотите найти дубликаты, в поле ввода «Найти что».

Шаг 3

При необходимости выберите другие параметры в разделе «Параметры поиска»; Использование параметров поиска, таких как «Поиск по регистру» и «Поиск только целых слов», делает ваш поиск более конкретным.

Шаг 4

Нажмите меню «Чтение выделения» и нажмите «Выделить все».

Как найти и выделить разные повторяющиеся слова

Есть текст, в котором объединено несколько списков фамилий.
В результате получилось, что в одном списке некоторые фамилии повторяются несколько раз.

Найти и выделить повторяющиеся слова в одном документе.
Нужно чтобы ворд сам выбрал те фамилии(слова), которые повторяются 2 и более раз и выделил их.

Например, повторяются фамилии ПУГАЧЕВА, ГАЛКИН, ЛЕНИН по нескольку раз.
Нужно выделить сразу всех галкиных, пугачевых и лениных и др. которые повторяются.
Т.к. список большой, то единичный поиск по фамилиям не пойдет.

Есть варианты?
Может макрос какой есть?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как удалить повторяющиеся слова в Custom.DIC
Как удалить повторяющиеся слова в пользовательском словаре Custom.DIC? Может, конечно, они сами .

Как найти в списке повторяющиеся слова?
Здравствуйте! Подскажите пожалуйста, как найти в python повторяющиеся слова (в списке) и вывести.

Как найти повторяющиеся слова, записанные через дефис?
Доброго времени суток! Подскажите, возможно ли как-то с помощью регулярок(или чего-то другого).

Как удалить повторяющиеся слова и слова, которые меньше/больше 9 символов ?!
1) Надо удалить точно такие же повторяющиеся слова а их много! 2) Как из всего списка удалить.

Как выделить одинаковые слова в Ворде?

Через Ctrl+F нашла все одинаковые слова. Теперь нужно выделить их ВСЕ и сразу одним цветом, например, красным. Как это сделать?

Чтобы выделить все необходимые слова необходимо после нажатия CTRL+F нажать кнопку и в открывшемся меню выбрать пункт .

Выбираем команду изменение цвета текста, теперь изменение цвета текста будет происходить одновременно во всех найденных словах:

Объясню на примере. Допустим, у нас есть текст (я взяла отрывок из «12 стульев»), и нам нужно найти и выделить красным цветом все встречающиеся в нем местоимения ед.ч. ж.р. — «она».

1) Заходим во вкладку «Главная», в верхней панели в крайнем правом окошке жмем «заменить»:

2) Во всплывающем окне в поле «найти» пишем она. И опять пишем она в поле «заменить на»

3) Нажимаем кнопку «больше» и выбираем: формат/выделение цветом.

4) Теперь ниже фразы «заменить на» должно появиться — выделение цветом:

5) Наконец жмем кнопку «заменить все».

Теперь все слова «она», имеющиеся в тексте выделены нужным нам цветом.

Кстати, можно выделять не только целые слова, но и части слов — например, только корень или только несколько цифр в длинных числах и т.д.

Выделение всех одинаковых слов в ворде происходит следующим методом. Нажмите Ctrl + f, после чего в выберите пункт «найти в» и в всплывающем меню выбрать основной документ. После чего ввести слово, которое вам нужно в графу поиска. Всё одинаковые слова выделяется, после чего можно делать с ними что угодно, изменить цвет, подчеркнуть, выделить жирным и тд.

Как в Ворде найти повторяющийся текст

Есть текст, в котором объединено несколько списков фамилий. В результате выяснилось, что в списке некоторые фамилии повторяются несколько раз. Найдите и выделите повторяющиеся слова в одном документе. необходимо, чтобы Слово само выбирало те фамилии (слова), которые повторяются 2 и более раз, и выделяло их.

Например, фамилии ПУГАЧЕВА, ГАЛКИН, ЛЕНИН повторяются несколько раз. необходимо сразу выделить всех повторяющихся Галкина, Пугачева, Ленина и т.д. Поскольку список большой, поиск по одной фамилии не сработает.

Как выделить одинаковые слова в Ворде?

Используя Ctrl + F, я нашел все те же слова. Теперь вам нужно выделить их ВСЕ и одновременно в один цвет, например красный. Как это сделать? Чтобы выделить все необходимые слова, после нажатия CTRL + F нажмите кнопку и выберите пункт в открывшемся меню .

Выбираем команду изменить цвет текста, теперь изменение цвета текста будет происходить одновременно во всех найденных словах:

Позвольте мне объяснить на примере. Допустим, у нас есть текст (я взял отрывок из «12 стульев»), и нам нужно найти и выделить красным все местоимения в единственном числе в нем. Р. — «она».

1) Перейдите на вкладку «Главная», в верхней панели крайнего правого окна нажмите «заменить»:

2) Во всплывающем окне в поле «найти» введите его. И снова пишем в поле «заменить на»

3) Нажмите кнопку «Другое» и выберите: выбор размера / цвета.

4) Теперь внизу должна появиться фраза «заменить на» — выделение цветом:

5) Наконец, нажмите кнопку «заменить все».

Теперь все слова «она» в тексте выделены нужным нам цветом.

Кстати, вы можете выделять не только слова целиком, но и части слов, например только корень или всего несколько цифр в длинных числах и т.д.

Подбор всех одинаковых слов в слове осуществляется следующим способом. Нажмите Ctrl + f, затем выберите запись «найти в» и выберите основной документ во всплывающем меню. Затем введите нужное слово в поле поиска. Выделяются все те же слова, после чего вы можете делать с ними все, что захотите, менять цвет, подчеркивание, выделение жирным шрифтом и т.д.

Как в ворде найти повторы текста?

Компьютеры

Чтобы заменить все одинаковые слова в тексте, не обязательно вручную просматривать весь документ. Это можно сделать с помощью инструмента «Заменить» в Microsoft Word, который присутствует даже в самых старых версиях программы.

Вне зависимости от установленной версии Microsoft Word для открытия инструмента воспользуйтесь сочетанием «Ctrl + H».
Для того чтобы открыть аналогичное окно в версии 2007 года или старше, перейдите на вкладку «Главная» и в разделе «Редактирование» нажмите на «Заменить». Откроется маленькое диалоговое окно с двумя полями для ввода текста: «Найти:» и «Заменить на:».


В первом необходимо ввести текст, который вы хотите заменить. Во втором — то, что должно оказаться на его месте.
Например, введя в первом поле слово «Microsoft » (с пробелом), а во втором — «Майкрософт » (тоже с пробелом), мы заменим все повторяющиеся слова в тексте, на затрагивая те, которые используются в адресе сайта. Если пробелы не использовать, то адрес сайта также поменяется.

Нажимая «Найти далее», вы видите, как в тексте подсвечивается нужный текст. Для одиночной замены нажмите «Заменить». Если уверены, что каждый случай проверять не нужно, жмите «Заменить все» и проверяйте работу.

Нажав на кнопку «Больше >>» вы получите список дополнительных инструментов:

  • «Направление» — в каком направлении осуществлять замену относительно текущего положения курсора;
  • «Учитывать регистр» — брать ли в расчет большие и маленькие буквы в тексте;
  • «Только слово целиком» — с этим параметром вы можете не ставить пробел при замене;
  • «Шрифт» — позволит выбрать текст с конкретными примененными изменениями, например, только полужирный, курсив и так далее;
  • «Подстановочные знаки» — упростит процесс поиска. Введя «а*б», вы замените все фразы, начинающиеся на «а» и заканчивающиеся на «б». Используя символ « Поиск и замена текста в Word

Поиск и замена в Word 2003

Заходим в меню — Правка — Заменить.

Откроется окно Найти и заменить. У этого маленького окошка очень большие возможности, но пока их все рассматривать не будем, а сразу перейдем на вкладку Заменить. В поле Найти напишем слово «статья», а в поле Заменить на, слово «книга».

Для более расширенных параметров поиска и замены, можно воспользоваться кнопкой Больше. Тогда это окошко примет такой вид.

В параметрах поиска можно указать Направление поиска (Вперед, Назад, Везде). Все зависит от того, где у вас установлен курсор.

Если установить галочку Учитывать регистр, то поиск и замена будет производится строго с учетом регистра букв. Например, если в поле Найти указать слово «Статья» с большой буквы, то поиск будет ориентироваться только на слово «Статья» с большой буквы.

Так, что если указать в поле Заменить на — слово «книга» с маленькой буквы, то соответственно замена произойдет именно на слово «книга» с маленькой буквы.

Имейте в виду, что заменять можно не только одно слово в тексте, но и целые предложения и фразы. Подстановочные знаки применяются в том случае когда не так важно какая буква в слове. Например, если вы напишите слово «к*т», то поиск выдаст вам и «кот» и «кит» и «кат».

Если установить флажок на Все словоформы, то замена слова «статья» произойдет с любым окончанием этого слова (статьи, статьей, статью). Так, что думайте сразу, что на что менять, а то потом запутаетесь, и придется править весь текст вручную.

Кнопка Заменить, произведет замену первого найденного слова. Кнопка Заменить все, заменит все встречающиеся слова в тексте. Кнопка Найти далее, нужна только в том случае, если перед этим нажали кнопку Заменить. Ну а кнопка Отменить, естественно отменяет ваше предыдущее действие.

Если оставить поле Заменить на пустым, то программа просто удалит все слово, которые вы вписали в поле Найти.

Для того, чтобы найти и заменить слово или фразу в Word 2007/2010, необходимо перейти на вкладку Главная и открыть блок Редактирование, или нажать одновременно на клавиатуре клавиши Ctrl + H. Все остальное делается так, как описано выше.

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

Как найти одинаковые строки с помощью программы Notepad++

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

Есть более простой и удобный способ найти одинаковые строки используя бесплатный супер мега текстовый редактор Notepad++.

Найти одинаковые строки с помощью этой замечательной программы можно в два клика.

  1. Итак, открываем ваш текстовый документ в программе Notepad++.
  2. Выделяем весь текст (Ctrl+A)
  3. Идем в меню TextFX -> TextFX Tools -> Sort lines case insensitive

При этом должна стоять галочка возле пункта «Sort outputs only UNIQUE lines».

Результат, после нажатия «Sort lines case insensitive» — мы получаем отсортированные строки без повторов и дублей.

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

Теперь при необходимости можно легко скопировать и вставить готовые строки в Exel или куда угодно.

Как и говорил в посте Как найти и заменить текст в Ms Office Word, Open Office Writer, Libre Office, сегодня попробуем поработать с большим количеством информации. Будем оставлять самое главное и удалять лишнее в очень большом тексте.

Текст, который мы будем «чистить»:

Итак, удаляем строки, которые выделены жирным и оставляем только нужный текст.

Обратите внимание, что длина удаляемого текста отличается. Для выделения строки независимо от количества символов нажимаем Ctrl+Shift+стрелка вниз. Под спойлером в конце поста вы увидите все команды выделения текста с помощью клавиатуры. А сейчас переводим курсор в начало текста, переходим в меню «Макросы» и включаем запись макроса.

Когда будете задавать имя макросу, не оставляйте пробелы — Word выдаст ошибку. Назначаем его для кнопки или клавиатуры. Я больше люблю работать с клавиатурой и выбрал поэтому клавиши.

Настраиваем макрос. Тут просто нажимаем любое сочетание клавиш. Если оно уже присвоено, то об этом появится информация.

Я присвоил макросу клавиатурную комбинацию Ctrl+G. Эта комбинация не используется в стандартном режиме редактирования и является свободной. Не переписывайте комбинации, которые часто используете .

  • вырезать выделенный контент (текст, графика, вложения)
  • скопировать выделенный контент
  • выделить всё в документе
  • отменить последнее действие
  • повторить последнее действие (обратно сочетанию Ctrl+Z)

Начнём записывать макрос. На самом деле тут ничего сложного нет, просто делайте так, как редактируете обычно текст. Используйте чаще клавиши «Home» и «End», потому что они работают быстрее и не привязаны к количеству символов.

Таким образом, при записи вам нужно последовательно нажать после включения записи макроса следующие клавиши и комбинации клавиш. Стрелкой «вниз» сместить курсор на одну строку ниже, нажатием «Ctrl+Shift+стрелка вниз» выделить строку, клавишей « Delete » удалить строку.

  • Включили запись макроса
  • пропускаем строку и переходим к следующей
  • выделяем 2 строку
  • выделяем 3 строку
  • выделяем 4 строку
  • переносим строку 5 к строке 1
  • переводим курсор в начало строки
  • Переходим в начало следующего повторяющегося блока
  • Выключаем запись макроса

Макрос записан, запись остановили. Кнопка остановки записи будет в том же месте, что и кнопка записи макроса.

Замечательно! Нажимаем Ctrl+G и лишний текст просто пропадает. Быстро, легко и удобно. А что делать, если записей… 1000 или больше?

Дадим команду обработать все вложения. А сколько этих вложений? Один из способов — найдите постоянное выражение через поиск. Я нажал Ctrl + F и ввёл в строку поиска выражение «Читайте блог Lassimarket.ru». Количество вхождений Word мне не показал, но я попросил его заменить это выражение на «*». Появилось окно с надписью «Произведено замен 24».

Запомнили число и нажали Ctrl+Z — отменили замену текста на звёздочку. Теперь я знаю, что в примере у меня 24 вхождения. Это я должен нажать 24 раза сочетание Ctrl+G для того, чтобы отформатировать текст. Будем упрощать это дело.

Нажимаем Alt+ F 11. Мы попали в редактор макросов. Это большая и сложная тема, тут самый настоящий язык программирования, но у нас всё будет просто, я вас уверяю.

Вписываем как на картинке две строки в начало и слово в конце.

Dim i As Integer

Что это значит? Мы обозначили i — числовой переменной и присвоили значения от 0 до 23, после окончания первого цикла замены число i увеличится на 1 и макрос будет снова повторяться (Next) до тех пор, пока не достигнет конца (23).

То есть эти строки дают команду после нажатия Ctrl+G повторить макрос «Удаляем3строки» 23 раза. Вот текст моего примера макроса.

Dim i As Integer

Selection.MoveDown Unit:=wdLine, Count:=1

Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend

Selection.Delete Unit:=wdCharacter, Count:=1

Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend

Selection.Delete Unit:=wdCharacter, Count:=1

Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend

Selection.Delete Unit:=wdCharacter, Count:=1

Selection.MoveDown Unit:=wdLine, Count:=1

Сохраняем макрос и закрываем редактор.

Обратите внимание, что после того, как мы перенесём пятую строку к первой, текст может вылезать на другую строку и макрос будет дальше работать неправильно.

Тогда можно временно заменить регулярное выражение на любой символ или уменьшить шрифт на этапе работы макроса и тому подобное.

Вернулись в редактор, нажали Ctrl+G, и текст мигом принял новый вид. Всё получилось. За пару минут обработали довольно большой текст в автоматическом режиме.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как составить календарь целей
  • Как найти людей на сайтах знакомств
  • Как найти морковь для кико
  • Почта как найти в телефоне приложение
  • Как найти кальян по фото

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии