Хитрости »
12 Апрель 2015 30608 просмотров
Сравнение текста по части предложения
Довольно часто возникает проблема сравнения двух строк(ячеек) по части текста. Если точнее — по совпадению слов. Чем больше слов в двух строках совпадает — тем больше они считаются похожими. Так, к примеру текст «Защитная пленка iPhone» и текст «Защитная пленка для Samsung GalaxyII» совпадут только на 40%, а «шла маша по шоссе» и «маша по шоссе шла» — на 100%.
Я не имею ввиду сейчас случаи вроде двух строк: «привет» и «превет». Для подобного сравнения можно написать решения различные, но скорость их выполнения как правило оставляет желать лучшего, да и точность такого сравнения тоже не на высоте, если не использовать всевозможные справочники
На деле подобная задача встречается достаточно часто и предположу, что данная статья может быть полезна очень многим. Итак, как ни жаль, но подобную задачу невозможно решить без применения Visual Basic for Applications(VBA). Решение, которое я предложу — функция пользователя. Поэтому прежде чем его использовать настоятельно рекомендую прочесть следующие статьи:
- Что такое функция пользователя(UDF)? — обязательно
- Почему не работает макрос? — обязательно
- Что такое макрос и где его искать? — не помешает
- Что такое модуль? Какие бывают модули? — не помешает
Собственно сам код функции:
Option Explicit Option Compare Text '--------------------------------------------------------------------------------------- ' Procedure : CompareTxt ' DateTime : 10.03.2015 22:46 ' Author : The_Prist(Щербаков Дмитрий) ' WebMoney - R298726502453; Яндекс.Деньги - 41001332272872 ' http://www.excel-vba.ru ' Purpose : Сравнивает две строки по совпадению отдельных слов. Выводит процент, саму строку и номер строки ' s1 - исходный текст(ссылка на ячейку или текст) ' mass - диапазон значений для сравнения с исходным текстом(ссылка на ячейку или текст) ' sDelim - разделитель слов в тексте. По умолчанию пробел ' lFstLast - указатель, выводить первое или последнее подходящее совпадение. ' По умолчанию 0(последнее максимально совпадающее). ' Если указать 1 - будет выбрано первое подходящее(в котором совпадают все слова) ' lShowAllInfo - указатель на результат. Допускается четыре значения: ' -1 - показывается вся информация: Процент совпадения строк, Найденное значение, ' Номер строки в указанном диапазоне в которой найдено значение ' 1 - Выводится только процент совпадения строк ' 2 - выводится только значение ' 3 - выводится только номер строки с найденным значением ' По умолчанию применяется -1(вся информация) ' Синтаксис: ' =CompareTxt(A1;B1:B100) - с разделителем по умолчанию ' =CompareTxt(A1;B1:B100;"-") - с разделителем короткое тире(-) ' =CompareTxt(A1;B1:B100;"-";;2) - с разделителем короткое тире(-) и выводом только значения '--------------------------------------------------------------------------------------- Function CompareTxt(s1 As String, mass As Range, Optional sDelim As String = " ", Optional lFstLast As Long = 0, Optional lShowAllInfo As Long = -1) Dim as1, as2, l1 As Long, l2 As Long, lr As Long Dim asStr2 Dim s As String, s2 As String, lp, lTmpCom As Long, lResCom As Long Dim lResR As Long, sResS As String, v as1 = Split(s1, sDelim) asStr2 = mass.Value If Not IsArray(asStr2) Then ReDim asStr2(1 To 1, 1 To 1): asStr2(1, 1) = mass.Value For lr = 1 To UBound(asStr2, 1) as2 = Split(asStr2(lr, 1), sDelim) lResCom = 0 For l1 = LBound(as1) To UBound(as1) s = as1(l1) For l2 = LBound(as2) To UBound(as2) If as2(l2) = s Then lResCom = lResCom + 1 Exit For End If Next l2 Next l1 If lTmpCom < lResCom Then lTmpCom = lResCom lResR = lr sResS = asStr2(lr, 1) lp = lp + 1 End If If lFstLast Then If lTmpCom >= (UBound(as1) + 1) Then Exit For End If End If Next lr v = (lTmpCom / (UBound(as1) + 1)) * 100 Select Case lShowAllInfo Case -1 CompareTxt = "Процент совпадения: " & v & "; Значение: " & sResS & "; Строка в массиве mass: " & lResR Case 1 'только процент CompareTxt = v Case 2 'только значение строки CompareTxt = sResS Case 3 'только номер строки CompareTxt = lResR End Select End Function
Данный код необходимо вставить в стандартный модуль книги(выше я привел ссылки на статьи, чтобы более точно понять куда и как вставить). Функция ищет указанное значение(s1) в массиве значений(mass) и выводит максимально подходящее значение. Максимально подходящее, естественно, полное совпадение — то, которое совпадает на 100%. Если же полного совпадения среди значений массива(mass) не будет найдено, то будет выведено значение с максимальным процентом совпадения. В таких случаях всегда можно указать последним аргументом(lShowAllInfo) -1 или 3, чтобы посмотреть номер строки в указанном диапазоне(mass) и сверить уже глазами подходит это значение или нет.
Синтаксис:
=CompareTxt(A1;B1:B100) — с разделителем по умолчанию
=CompareTxt(A1;B1:B100;»-«) — с разделителем короткое тире(-)
=CompareTxt(A1;B1:B100;»-«;;2) — с разделителем короткое тире(-) и выводом только значения
Аргументы:
s1 — исходный текст(ссылка на ячейку или текст)
mass — диапазон значений для сравнения с исходным текстом(ссылка на ячейку или текст)
sDelim — разделитель слов в тексте. По умолчанию пробел.
lFstLast — указатель, выводить первое или последнее подходящее совпадение. По умолчанию 0(последнее максимально совпадающее). Если указать 1 — будет выбрано первое подходящее(в котором совпадают все слова)
lShowAllInfo — указатель на результат. Допускается четыре значения:
- -1 — показывается вся информация: Процент совпадения строк, Найденное значение, номер строки в указанном диапазоне в которой найдено значение
- 1 — Выводится только процент совпадения строк
- 2 — выводится только значение
- 3 — выводится только номер строки с найденным значением. По умолчанию применяется -1(вся информация)
Ниже функция в файле с примерами использования:
Tips_Macro_ComparePart.xls (50,5 KiB, 3 594 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
mrm26 Пользователь Сообщений: 13 |
В каждой ячейке столбца NAME есть одинаковые названия заводов. Необходимо вывести в другой столбец похожие названия с % совпадений. Агропромпроект ЦЧР,(г.Воронеж) 2 Агропромпроект, ООО(г.Воронеж) Насколько % эти две строки похожи по символам. Изменено: mrm26 — 17.01.2020 11:56:33 |
Mershik Пользователь Сообщений: 8277 |
Не бойтесь совершенства. Вам его не достичь. |
mrm26 Пользователь Сообщений: 13 |
https://www.planetaexcel.ru/techniques/7/5636/
не подходит. Там дается 2 таблицы и проводится сравнивание. Мне нужно с одного столбца В искала похожие слова по символам. И какой процент совпадений или окрашивались цветом похожие слова в строке. |
mrm26, Доброго дня. Допустим вы выполняете пункт 2.3 >>> и шанс помощи значительно увеличивается. Ну и вообще желательно ознакомится со всем что там написано. |
|
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#5 17.01.2020 13:02:06 Доброе время суток
Процент — это отношение. В вашем случае отношение чего к чему? |
||
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
mrm26, при подсчета % порядок символов учитывать? А то Агропромпроект и Проектагропром ведь будут совпадать на 100%. Вот горшок пустой, он предмет простой… |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#7 17.01.2020 13:14:37
Ну, вы и захотели. Тут же как в песне — «Милый, мой хороший, догадайся сам..» |
||
В книге «Скульптор данных» был описан пример как посчитать этот %. Но тут игнорируется регистр и порядок символов. Прикрепленные файлы
|
|
mrm26 Пользователь Сообщений: 13 |
В прикрепленном файле Столбец В список заводов. Необходимо сравнить все похожие заводы и вывести в столбец В и F более похожие заводы. А в столбце D вывести % совпадений названий заводов или выделить цветом символы названий заводов. В прикрепленном файле показано. Изменено: mrm26 — 17.01.2020 19:50:02 |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#10 17.01.2020 13:19:46
В прикрепленном файле нет ответов на вопросы
|
||||||
mrm26 Пользователь Сообщений: 13 |
#11 17.01.2020 13:24:59
Порядок символов учитывается. |
||
mrm26 Пользователь Сообщений: 13 |
#12 17.01.2020 13:28:56
Допустим 2 завода |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#13 17.01.2020 13:31:12
Чему равен процент в данном случае и как вы его посчитали? Если уж не хотите ответить на вопрос
|
||||
mrm26 Пользователь Сообщений: 13 |
#14 17.01.2020 13:43:31
Процент равен совпадающим символам в слове. |
||
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
mrm26, вы такими ответами всех помогающих распугаете. Вот горшок пустой, он предмет простой… |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#16 17.01.2020 13:48:04
Правильно ли я понимаю, что если взять выделенные серым символы в вашем примере, то процент совпадения можно вычислить как =ДЛСТР(«Волгоградгипро»)? |
||
mrm26 Пользователь Сообщений: 13 |
#17 17.01.2020 13:51:13
Да |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#18 17.01.2020 14:29:35
Сравнить значения в столбце B между собой или между B и C? |
||
mrm26 Пользователь Сообщений: 13 |
#19 17.01.2020 14:39:17
Сравнить значения в столбце B между собой. Столбец С это полное наименование заводов. А В это сокращенное название. |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
Вариант. Выделяете в столбце В диапазон данных. Выводятся в ближайшие правые три столбца данные: «Похожее» наименование в значению в строке столбца В, их наибольшая общая подстрока, процент совпадения как отношение числа символов в наибольшей общей подстроке к к значению в строке столбца В. Изменено: Андрей VG — 17.01.2020 15:29:35 |
mrm26 Пользователь Сообщений: 13 |
Спасибо за вариант. Надо решение именное средствами Excel. Прошу Вас обратить внимание на скрин. |
mrm26 Пользователь Сообщений: 13 |
#22 17.01.2020 17:22:59
Спасибо за вариант. Только вот когда в столбце В буду похожие символы то они переносятся на другой столбец и больше не повторяется в столбце В. См. скрин. |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#23 17.01.2020 17:51:38
Тогда плохой из меня телепат — ждите следующего |
||
mrm26 Пользователь Сообщений: 13 |
#24 17.01.2020 19:54:50
Спасибо. Переписал ваш код. Делает то что нужно. Тему можно закрыть. |
||
Как сравнить текст в Excel
Когда вы используете табличный процессор Excel (от Microsoft Office), кроме задач по сравнению числовых значений, часто необходимо бывает сравнить текстовые (или «строковые») данные в ячейках таблицы. Сделать это можно так: в Excel есть встроенныефункции сравнения, и если результат операции необходимо получить в виде цифрового или же логического значения нужно воспользоваться этим сравнением. Так же можно использовать и опции условного форматирования, это делается в том случае, когда результатом должно стать визуальное выделение всех совпадающих (или же несовпадающих) ячеек данной таблицы.
Воспользуемся встроенной функцией для сравнения ячеек СЧЁТЕСЛИ, когда нужно сравнить текстовые показатели в ячейках колонки таблицы непосредственно с образцом текста и потом пересчитать все возможные совпадающие значения. Начинаем с заполнения конкретной колонки текстовыми значениями, потом делаем это в другой колонке и щелкаем ячейку, где вы хотите увидеть результат вашего подсчета, и там вводим соответствующую формулу. К примеру, если проверяемые показатели находятся в колонке типа «A», а результат нужно поместить в 1-ю ячейку колонки типа «C», то всё ее содержимое должно выглядеть так: =СЧЁТЕСЛИ($A:$A;»Виноград»).«Виноград» здесь, это строковое значение, непосредственно с которым и сравниваются показатели всех ячеек данной колонки «A». Можно так же не указывать это в формуле, но поместить в свободную отдельную ячейку (в «B1», например) и вставить в формулу нужную ссылку: =СЧЁТЕСЛИ($A:$A;B1).
Дальше мы будем использовать опции условного форматирования, особенно, если нужно визуально выделить в конкретной таблице результаты сравнения строковых переменных. Так, если необходимо выделить в данной колонке ячейки «A», текст совпадающий с образцом находящимся в ячейке «B1», старайтесь начинать с выделения данной колонки, а для этогощелкните по её заголовку. Потом щелкните по кнопке «Условное форматирование», находящееся в группе команд типа «Стили», закладке «Главная» в программе Excel. Переходим в раздел под названием «Правила выделения ячеек» с выбором строки «Равно». Там указываем ячейку-образец (щелкаем по клетке «B1») и выбираем в выпадающем списке вариант для оформления совпадающих строк. Нажимаем кнопку «OK».
Тут нужно использовать комбинацию встроенных функций типа «ЕСЛИ» и «СЦЕПИТЬ» ипри необходимости сравниватьс данным образцом не одну, а несколько текстовых ячеек. Функция «СЦЕПИТЬ» будет соединять указанные ей значения непосредственно в одну строковую переменную. К примеру, команда типа «СЦЕПИТЬ» (шаг «A1» или «B1») в строке из ячейки типа «A1» добавит нужный текст » и «, ну а после него он поместит строку из другой ячейки, а именно из „ B1“. Сделанную таким способом строку можно затем сравнивать с образцом при помощи функции „ЕСЛИ“. Если сравнивать необходимо не одну строку, то удобнее дать имя (своё собственно) ячейке-образцу. Что бы это сделать щелкните ее, а потом влево от строки формулы вместо обозначения ячейки („C1“ например) наберите новое ее имя („образец“, к примеру). Затем нужно кликнуть ту ячейку, в которой и должен быть результат вашего сравнения, и вводим формулу такого типа:
ЕСЛИ(СЦЕПИТЬ(A1;» и «;B1)=образец;1;0)
Тут, единица -значение, которое станет содержать ячейка с формулой, когда сравнение даст вам положительный результат, а цифра ноль — то же самое, но для отрицательного результата. Размножать эту формулу ко всем строкам таблицы, которые необходимо сравнить с данным образцом очень легко — наведите курсор к правому нижнему углу ячейки и, в тот момент, когдакурсор изменится (он станет черным крестиком), нужно нажать на левую кнопку мышки и растянуть эту ячейку далеко вниз до последней из сравниваемых строк.
Сравнение текста с шаблоном в Excel
Описание функции
Функция =ТЕКСТКАК(ТЕКСТ, ШАБЛОН) имеет два обязательных аргумента:
- ТЕКСТ — строка в которой необходимо произвести сравнение по заданному шаблону.
- ШАБЛОН, задающий сравнение текста. В шаблоне можно применять специальные обозначения:
- ? — Любой отдельный знак.
- * — Ноль или больше знаков.
- # — Любая отдельная цифра.
- [ ] — Любой отдельный знак из скобок.
- [! ] — Любой отдельный знак отсутствующий в скобках
Теперь к практике. Далее привожу множество примеров использования данной функции.
Как найти фамилии, заканчивающиеся на букву «а»?
Решением является формула =ТЕКСТКАК(ТЕКСТ;»*а»), где символ * указывает на неограниченное количество букв и символов перед последней буквой а.
Как привести телефонный справочник в порядок.
Используем формулу =ТЕКСТКАК(ТЕКСТ;»+# ### ###-##-##»), где знак # обозначает, что на этом месте может быть расположена любая цифра.
Найти слова которые содержат сочетание «сто» в любой части слова
Найти слова которые содержат сочетание «раст» или «рост» в любой части слова
Найти слова которые содержат любое сочетание кроме «раст»
Найти текст, который начинается с цифры
Проверка правильности введенного email. Сразу оговорюсь, проверка email в данном случае не полноценная, написана для в качестве примера, объясняющего принцип работы.
Excel works!
Excel работает за вас
Excel works!
Thanks for Visiting
Сравнение текста в Excel и поиск символов
Чтобы сравнить две ячейки, в которых содержится текст необходимо просто приравнять их в соседней ячейки. Но что делать если, вам нужно сравнить текст с учетом больших и маленьких букв? А если с учетом английских букв? Появилась такая потребность как сравнение текста в Excel? Читайте далее и уверен статья вам поможет:
1) С простым сравнением разобрались? Отлично 🙂
2) Сравнение текста в Excel по регистрам
Сравнение текстов происходит простой формулой в примере номер 1, на картинке. Если необходимо сравнить прописные и заглавные буквы воспользуйтесь функцией =СОВПАД(). Пример 2.
3) Поиск чисел в ячейки с текстом
Самый простой способ найти числа в строке, воспользоваться формулой
Самая распространенная ошибка — вместо буквы О пишут число 0 и наоборот
Но обязательно воспользуйтесь формулой массива — нажмите ctrl+shift+enter вместо enter после ввода формулы.
4) Поиск определенных символов в тексте
В примере показывается, как можно найти все заглавные буквы русского алфавита. Но можно использовать эту группу функций для поиска любых символов.
Опять же не забываем про формулы массивов!
5) Удалить лишние пробелы в начале и конце строки
В версии excel 2007 появилась замечательная функция =СЖПРОБЕЛЫ() — она удаляет все лишние пробелы в начале и конце текста, а так же все задвоенные пробелы. Настоятельно рекомендую запомнить — использую ее чуть ли не каждый день.
6) Поиск символов
Для поиска символов можно использовать функцию =ПОИСК() она возвращает (считает) на какой позиции находиться заданный вами символ. Подробнее здесь .
7) Поиск символов с помощью условного форматирования или фильтра. Возможность «Содержит»
Можно окрасить все ячейки цветом, которые содержат заданные символы, или надписи в них. Для этого воспользуйтесь условным форматированием . Как показано на рисунке
Чтобы оставить только те ячейки, которые содержат нужные символы воспользуйтесь фильтрами. В фильтрах есть возможность отобрать строки по заданным условиям
Функция СОВПАД для сравнения значений двух таблиц в Excel без ВПР
Функция СОВПАД в Excel предназначена для проверки двух текстовых срок на их полное соответствие друг другу и возвращает одно из двух возможных логических значений: ИСТИНА – если строки полностью совпадают, ЛОЖЬ – если обнаружено хотя бы одно несоответствие в сравниваемых данных. При работе данной функции учитывается регистр букв. Это значит, что результат сравнения двух строк «текст» и «ТеКсТ» будет равен значению ЛОЖЬ. Распространенный вариант применения рассматриваемой функции – определение вхождения некоторого текста в документ.
Сравнение двух таблиц по функции СОВПАД в Excel
Пример 1. Есть две одинаковые (на первый взгляд) таблицы данных, которые содержат наименования продукции. Одну из них предположительно редактировал уволенный работник. Необходимо быстро сравнить имеющиеся данные и выявить несоответствия.
Вид таблицы данных:
Для сравнения двух строк используем следующую формулу массива (CTRL+SHIFT+Enter):
Описание параметров функции СОВПАД:
- D3 – текущая ячейка с текстом из второй таблицы;
- $B$3:$B$13 – соответствующая ячейка с текстом из второй таблицы для проверки на совпадение со значением D3.
Функция ИЛИ возвращает логическое значение ИСТИНА из массива если хотя бы одно из них совпадает с исходным значением.
Протянем данную формулу вниз до конца таблицы, чтобы Excel автоматически рассчитал значения для остальных строк:
Как видно, в сравниваемых строках были найдены несоответствия.
Выборка значений из таблицы по условию в Excel без ВПР
Пример 2. В таблице содержатся данные о продажах мобильных телефонов (наименование и стоимость). Определить самый продаваемый вид товара за день, рассчитать количество проданных единиц и общую выручку от их продажи.
Вид таблицы данных:
Поскольку товар имеет фиксированную стоимость, для определения самого продаваемого смартфона можно использовать встроенную функцию МОДА. Чтобы найти наименование наиболее продаваемого товара используем следующую запись:
Функция мода определяет наиболее часто повторяющиеся числовые данные в диапазоне цен. Функция ПОИСКПОЗ находит позицию первой ячейки из диапазона, в которой содержится цена самого популярного товара. Полученное значение выступает в качестве первого аргумента функции адрес, возвращающей ссылку на искомую ячейку (к значению прибавлено число 2, поскольку отсчет начинается с третьей строки сверху). Функция ДВССЫЛ возвращает значение, хранящееся в ячейке по ее адресу.
В результате расчетов получим:
Для определения общей прибыли от продаж iPhone 5s используем следующую запись:
Функция СУММПРИЗВ используется для расчета произведений каждого из элементов массивов, переданных в качестве первого и второго аргументов соответственно. Каждый раз, когда функция СОВПАД находит точное совпадение, значение ИСТИНА будет прямо преобразовано в число 1 (благодаря двойному отрицанию «—») с последующим умножением на значение из смежного столбца (стоимость).
Результат расчетов формулы:
Всего было куплено 4 модели iPhone 5s по цене 239 у.е., что в целом составило 956 у.е.
Правила синтаксиса и параметры функции СОВПАД в Excel
Функция СОВПАД имеет следующий вариант синтаксической записи:
- текст1 – обязательный для заполнения, принимает ссылку на ячейку с текстом или текстовую строку для сравнения с данными, принимаемые вторым аргументом.
- текст2 – обязательный для заполнения, принимает ссылку на ячейку или текст, с которым сравниваются данные, переданные в виде первого аргумента.
- Результат выполнения функции СОВПАД, принимающей на вход два имени, является код ошибки #ИМЯ? (например, СОВПАД(имя;имя)). Для корректной работы функции указываемые текстовые данные необходимо помещать в кавычки (например, («имя»;«имя»)).
- Функция выполняет промежуточное преобразование числовых данных в текст. Например, результат выполнения =СОВПАД(111;111) будет логическое значение ИСТИНА. Однако, преобразование логических данных в числа текстового формата не выполняется. Например, результат выполнения =СОВПАД(ИСТИНА;1) будет логическое ЛОЖЬ.
- Результат сравнения двух пустых ячеек или пустых текстовых строк с использованием функции СОВПАД — логическое ИСТИНА.
Сравнение текста по части предложения
Довольно часто возникает проблема сравнения двух строк(ячеек) по части текста. Если точнее — по совпадению слов. Чем больше слов в двух строках совпадает — тем больше они считаются похожими. Так, к примеру текст «Защитная пленка iPhone» и текст «Защитная пленка для Samsung GalaxyII» совпадут только на 40%, а «шла маша по шоссе» и «маша по шоссе шла» — на 100%.
Я не имею ввиду сейчас случаи вроде двух строк: «пр и вет» и «пр е вет». Для подобного сравнения можно написать решения различные, но скорость их выполнения как правило оставляет желать лучшего, да и точность такого сравнения тоже не на высоте, если не использовать всевозможные справочники
На деле подобная задача встречается достаточно часто и предположу, что данная статья может быть полезна очень многим. Итак, как ни жаль, но подобную задачу невозможно решить без применения Visual Basic for Applications(VBA). Решение, которое я предложу — функция пользователя. Поэтому прежде чем его использовать настоятельно рекомендую прочесть следующие статьи:
Option Explicit Option Compare Text ‘————————————————————————————— ‘ Procedure : CompareTxt ‘ DateTime : 10.03.2015 22:46 ‘ Author : The_Prist(Щербаков Дмитрий) ‘ WebMoney — R298726502453; Яндекс.Деньги — 41001332272872 ‘ http://www.excel-vba.ru ‘ Purpose : Сравнивает две строки по совпадению отдельных слов. Выводит процент, саму строку и номер строки ‘ s1 — исходный текст(ссылка на ячейку или текст) ‘ mass — диапазон значений для сравнения с исходным текстом(ссылка на ячейку или текст) ‘ sDelim — разделитель слов в тексте. По умолчанию пробел ‘ lFstLast — указатель, выводить первое или последнее подходящее совпадение. ‘ По умолчанию 0(последнее максимально совпадающее). ‘ Если указать 1 — будет выбрано первое подходящее(в котором совпадают все слова) ‘ lShowAllInfo — указатель на результат. Допускается четыре значения: ‘ -1 — показывается вся информация: Процент совпадения строк, Найденное значение, ‘ Номер строки в указанном диапазоне в которой найдено значение ‘ 1 — Выводится только процент совпадения строк ‘ 2 — выводится только значение ‘ 3 — выводится только номер строки с найденным значением ‘ По умолчанию применяется -1(вся информация) ‘ Синтаксис: ‘ =CompareTxt(A1;B1:B100) — с разделителем по умолчанию ‘ =CompareTxt(A1;B1:B100;»-«) — с разделителем короткое тире(-) ‘ =CompareTxt(A1;B1:B100;»-«;;2) — с разделителем короткое тире(-) и выводом только значения ‘————————————————————————————— Function CompareTxt(s1 As String, mass As Range, Optional sDelim As String = » «, Optional lFstLast As Long = 0, Optional lShowAllInfo As Long = -1) Dim as1, as2, l1 As Long, l2 As Long, lr As Long Dim asStr2 Dim s As String, s2 As String, lp, lTmpCom As Long, lResCom As Long Dim lResR As Long, sResS As String, v as1 = Split(s1, sDelim) asStr2 = mass.Value If Not IsArray(asStr2) Then ReDim asStr2(1 To 1, 1 To 1): asStr2(1, 1) = mass.Value For lr = 1 To UBound(asStr2, 1) as2 = Split(asStr2(lr, 1), sDelim) lResCom = 0 For l1 = LBound(as1) To UBound(as1) s = as1(l1) For l2 = LBound(as2) To UBound(as2) If as2(l2) = s Then lResCom = lResCom + 1 Exit For End If Next l2 Next l1 If lTmpCom = (UBound(as1) + 1) Then Exit For End If End If Next lr v = (lTmpCom / (UBound(as1) + 1)) * 100 Select Case lShowAllInfo Case -1 CompareTxt = «Процент совпадения: » & v & «; Значение: » & sResS & «; Строка в массиве mass: » & lResR Case 1 ‘только процент CompareTxt = v Case 2 ‘только значение строки CompareTxt = sResS Case 3 ‘только номер строки CompareTxt = lResR End Select End Function
Данный код необходимо вставить в стандартный модуль книги(выше я привел ссылки на статьи, чтобы более точно понять куда и как вставить). Функция ищет указанное значение( s1 ) в массиве значений( mass ) и выводит максимально подходящее значение. Максимально подходящее, естественно, полное совпадение — то, которое совпадает на 100%. Если же полного совпадения среди значений массива( mass ) не будет найдено, то будет выведено значение с максимальным процентом совпадения. В таких случаях всегда можно указать последним аргументом( lShowAllInfo ) -1 или 3, чтобы посмотреть номер строки в указанном диапазоне( mass ) и сверить уже глазами подходит это значение или нет.
Синтаксис:
=CompareTxt(A1;B1:B100) — с разделителем по умолчанию
=CompareTxt(A1;B1:B100;»-«) — с разделителем короткое тире(-)
=CompareTxt(A1;B1:B100;»-«;;2) — с разделителем короткое тире(-) и выводом только значения
Аргументы:
s1 — исходный текст(ссылка на ячейку или текст)
mass — диапазон значений для сравнения с исходным текстом(ссылка на ячейку или текст)
sDelim — разделитель слов в тексте. По умолчанию пробел.
lFstLast — указатель, выводить первое или последнее подходящее совпадение. По умолчанию 0(последнее максимально совпадающее). Если указать 1 — будет выбрано первое подходящее(в котором совпадают все слова)
lShowAllInfo — указатель на результат. Допускается четыре значения:
- -1 — показывается вся информация: Процент совпадения строк, Найденное значение, номер строки в указанном диапазоне в которой найдено значение
- 1 — Выводится только процент совпадения строк
- 2 — выводится только значение
- 3 — выводится только номер строки с найденным значением. По умолчанию применяется -1(вся информация)
Ниже функция в файле с примерами использования:
Tips_Macro_ComparePart.xls (50,5 KiB, 2 136 скачиваний)
Статья помогла? Поделись ссылкой с друзьями!
Проверка ячейки на наличие в ней текста (с учетом регистра)
Смотрите также: Вот. Сравниваем E ячейке отображались все поле «Имя:» введитеNach = Mid$(t1, i,СЧЁТЕСЛИИСТИНА (TRUE) диапазон.Оператор выводит результат – после чего закрываем табличного массива, встречаетсяСЧЁТЕСЛИ«OK» выделения групп ячеек.. В нашем случае с остальными ячейками варианты.Примечание: и H. данные из первой значение – Таблица_1. j)
(COUNTIF)илиПри сравнении диапазонов в число скобки. Конкретно в один раз.. С помощью данного. Устанавливаем переключатель в получилось такое выражение: обеих таблиц в
Сравнение ячейки с другой ячейкой
Скачать последнюю версиюМы стараемся какunknown_hero
ячейки, которые неЛевой клавишей мышки сделайтеIf InStr(Nach, «[«)из категории
Сравнение значения со значениями из списка
ЛОЖЬ (FALSE) разных книгах можно3
нашем случае вТеперь нам нужно создать инструмента можно произвестиВернувшись в окно создания позицию—(A2:A7<>D2:D7) тех колонках, которые Excel можно оперативнее обеспечивать: Видимо, совсем сложно ввел во вторую щелчок по полю Then Nach =Статистические: использовать перечисленные выше. Именно оно наименьшее поле подобное выражение и подсчет того, сколько
Проверка соответствия части ячейки определенному тексту
правила форматирования, жмем«Выделить по строкам»Щелкаем по кнопке
мы сравниваем. НоЧитайте также: Сравнение двух вас актуальными справочными
slAvIk159 ячейку. Помогите с ввода «Диапазон:» и
Replace$(Nach, «[«, «[[]»)
-
, которая подсчитывает сколькоЧисло несовпадений можно посчитать
-
способы, исключая те из нумерации несовпадающих«Значение если истина»
support.office.com
Методы сравнения таблиц в Microsoft Excel
для всех других каждый элемент из на кнопку. Жмем по кнопке«OK» можно просто провести документов в MS материалами на вашем: формула в столбце формулой. (в ячейках выделите диапазон: A2:A15. ‘ и, на раз каждый элемент формулой: варианты, где требуется строк табличных массивов.получилось следующее выражение: элементов первой таблицы. выбранного столбца второй«OK»«OK». копирование формулы, что Word языке. Эта страница J, сделал сравнение идет перечисление через
И нажмите ОК. всякий случай, прописать
из второго списка=СУММПРОИЗВ(—(A2:A20<>B2:B20)) размещение обоих табличных
Способы сравнения
С помощью маркераСТРОКА(D2) Для этого выполним таблицы повторяется в..
- Оператор производит расчет и позволит существенно сэкономить
- Существует довольно много способов переведена автоматически, поэтому
- для даты с запятую).
Для второго списка выполните аналогично для других встречался в первом:или в английском варианте областей на одном заполнения копируем формулуТеперь оператор копирование, воспользовавшись маркером первой.После автоматического перемещения вКак видим, после этого
выводит результат. Как время. Особенно данный сравнения табличных областей ее текст может столбца GИспользую такую формулу
Способ 1: простая формула
те же действия спецсимволовПолученный в результате ноль =SUMPRODUCT(—(A2:A20<>B2:B20)) листе. Главное условие до самого низа.СТРОКА заполнения, как этоОператор окно несовпадающие значения строк видим, в нашем фактор важен при в Excel, но содержать неточности иunknown_hero =СЖПРОБЕЛЫ(ЛЕВСИМВ(RC[-2];ПОИСК(RC[-1];RC[-2])-1) & ПРАВСИМВ(RC[-2]; только имя присвойтеShablon = Sha1 и говорит обЕсли в результате получаем для проведения процедурыТеперь, зная номера строкбудет сообщать функции мы уже делалиСЧЁТЕСЛИ«Диспетчера правил»
будут подсвечены отличающимся случае результат равен сравнивании списков с все их можно грамматические ошибки. Для: Не работает - МАКС(0;ДЛСТР(RC[-2])-ПОИСК(RC[-1];RC[-2])-ДЛСТР(RC[-1])))) – Таблица_2. А
- & Nach & отличиях. ноль — списки сравнения в этом несовпадающих элементов, мыЕСЛИ прежде. Ставим курсоротносится к статистическойщелкаем по кнопке оттенком. Кроме того, числу большим количеством строк. разделить на три нас важно, чтобы первые две строкиRC[-2] — ссылка диапазон укажите C2:C15
"*"
И, наконец, «высший пилотаж» идентичны. В противном случае – это можем вставить в
- номер строки, в в нижнюю правую группе функций. Его«OK» как можно судить«1»Процедуру копирования легче всего большие группы: эта статья была должна быть ложь,
- на первую ячейку – соответственно.makroshka — можно вывести случае — в открытие окон обоих ячейку и их которой расположена конкретная часть элемента листа, задачей является подсчети в нем. из содержимого строки, то есть, это
выполнить при помощисравнение списков, находящихся на вам полезна. Просим две последние -RC[-1] — наПолезный совет! Имена диапазонов: Так, с символами отличия отдельным списком. них есть различия. файлов одновременно. Для значения с помощью фамилия, и в который содержит функцию количества ячеек, значенияТеперь во второй таблице формул, программа сделает означает, что в маркера заполнения. Наводим
- одном листе; вас уделить пару истина. вторую можно присваивать быстрее поняла, буду отрабатывать. Для этого придется Формулу надо вводить версий Excel 2013 функции случае, когда условие,СЧЁТЕСЛИ в которых удовлетворяют элементы, которые имеют активной одну из сравниваемых списках было курсор на правыйсравнение таблиц, расположенных на
- секунд и сообщить,slAvIk159Там одно НО. с помощью поля Пока попробовала в использовать формулу массива: как формулу массива, и позже, аИНДЕКС заданное в первом
- , и после преобразования заданному условию. Синтаксис данные, несовпадающие с ячеек, находящуюся в найдено одно несовпадение. нижний угол ячейки, разных листах; помогла ли она: кое-чё не учёл.
- Если в первой имен. Оно находится таком виде вставитьВыглядит страшновато, но свою т.е. после ввода также для версий. Выделяем первый элемент поле, будет выполняться, его в маркер данного оператора имеет
соответствующими значениями первой
указанных не совпавших Если бы списки где мы получилисравнение табличных диапазонов в вам, с помощью держите, теперь работает ячейке написано 1,2,3,4,5, левее от строки в код. Программа
работу выполняет отлично формулы в ячейку до Excel 2007 листа, содержащий формулу функция заполнения зажимаем левую такой вид: табличной области, будут строках. были полностью идентичными, показатель разных файлах. кнопок внизу страницы.китин а во второй формул. Просто выделяйте зависла и я ;) жать не на с выполнением этого
НАИМЕНЬШИЙ
ЕСЛИ кнопку мыши и=СЧЁТЕСЛИ(диапазон;критерий)
- выделены выбранным цветом.Произвести сравнение можно, применив то результат бы«ИСТИНА»Именно исходя из этой Для удобства также: а так? 1,3,5 то в диапазоны ячеек, а понять не могуmakroshkaEnter условия нет никаких. После этого переходимбудет выводить этот тянем курсор вниз.
АргументСуществует ещё один способ метод условного форматирования. был равен числу. При этом он классификации, прежде всего, приводим ссылку на200?’200px’:»+(this.scrollHeight+5)+’px’);»>=—ТЕКСТ(ДАТА(ПРАВБ(ПСТР(E2;ПОИСК(«/»;E2)+1;6);2);ПСТР(ПСТР(E2;ПОИСК(«/»;E2)+1;6);3;2);ЛЕВБ(ПСТР(E2;ПОИСК(«/»;E2)+1;6);2));»ДД.ММ.ГГ») третье ячейке данные в поле имен — она так: Очень прошу помощи., а на проблем. Но в в строку формул номер в ячейку.Как видим, программа произвела«Диапазон»
применения условного форматирования
Как и в«0» должен преобразоваться в подбираются методы сравнения, оригинал (на английскомunknown_hero не появляются. Работает вводите соответствующее имя
Способ 2: выделение групп ячеек
считает или пора Я в VBACtrl+Shift+Enter Excel 2007 и и перед наименованием Жмем на кнопку вычисление совпадений, сравнивпредставляет собой адрес для выполнения поставленной предыдущем способе, сравниваемые. черный крестик. Это
- а также определяются языке) .: Спасибо! Последний сработал. только по такой для диапазона и перезагружать программу. Висит новичок и не. Excel 2010 для«НАИМЕНЬШИЙ»«OK» каждую ячейку первой массива, в котором задачи. Как и области должны находиться
Таким же образом можно и есть маркер конкретные действия иПредположим, что требуется найти_Boroda_ схеме. В первой нажмите Enter. уже 30 минут… совсем понимаю, почемуЕсли с отличающимися ячейками того, чтобы открытьдописываем название. таблицы с данными, производится подсчет совпадающих предыдущие варианты, он на одном рабочем производить сравнение данных заполнения. Жмем левую
- алгоритмы для выполнения написанный прописными буквами: Еще вариант ячейке 1,2,3,4,5 воТеперь воспользуемся условным форматированием,
- Rua не работает программа. надо что сделать, оба окна одновременно,«ИНДЕКС»Как видим, первый результат которые расположены во значений. требует расположения обоих листе Excel и в таблицах, которые
- кнопку мыши и задачи. Например, при текст, начинающийся со200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ПСТР(E2;ПОИСК(«/»;E2)+1;6)=ТЕКСТ(H2;»ДДММГ») второй 2,3,4 тогда чтобы выполнить сравнение: Здравствуйте! Помогите, пожалуйста,Есть задача: в то подойдет другой требуется провести дополнительныебез кавычек, тут
Способ 3: условное форматирование
отображается, как втором табличном диапазоне.Аргумент сравниваемых областей на быть синхронизированными между расположены на разных тянем курсор вниз проведении сравнения в стандартного префикса, принятого
- TerraMorf в третьей 1,5. двух списков в решить такую задачу: столбике D есть быстрый способ: выделите манипуляции. Как это же открываем скобку«ЛОЖЬ» В четырех случаях«Критерий» одном листе, но собой. листах. Но в на количество строчек разных книгах требуется в организации, например: Добрый день! Считает только последовательность, Excel. Нам нужно нужно сравнить текстовые
- выделенные желтым ячейки. оба столбца и сделать рассказывается в и ставим точку. Это означает, что
- результат вышелзадает условие совпадения. в отличие отПрежде всего, выбираем, какую этом случае желательно, в сравниваемых табличных одновременно открыть два ИН_ или ТУ-.Подскажите каким образом а не сами получить следующий результат: значения в ячейках Программа должна находить нажмите клавишу отдельном уроке. с запятой ( значение не удовлетворяет«1» В нашем случае ранее описанных способов, табличную область будем чтобы строки в массивах. файла Excel. Существует несколько способов в VBA можно цифры. (ФИО) и присвоить эти ячейки иF5Урок: Как открыть Эксель;
условиям оператора
, а в двух он будет представлять условие синхронизации или считать основной, а них были пронумерованы.Как видим, теперь в
- Кроме того, следует сказать, проверки ячейки на задать условие дляКак это исправить?Позиции, которые есть в в отдельном столбце сравнивать на совпадение, затем в открывшемся в разных окнах). Затем выделяем вЕСЛИ случаях – собой координаты конкретных
- сортировки данных не в какой искать В остальном процедура дополнительном столбце отобразились что сравнивать табличные
- наличие в ней сравнения текста вАббель Таблице_1, но нет уникальные идентификаторы (000001, с остальными ячейками
- окне кнопкуКак видим, существует целый строке формул наименование. То есть, первая«0» ячеек первой табличной
будет являться обязательным, отличия. Последнее давайте сравнения практически точно все результаты сравнения области имеет смысл текста с учетом ячейке одного листа: Выложите пример в Таблцие_2 будут 000002, 000003 и в этом столбике.Выделить (Special) ряд возможностей сравнить«ИНДЕКС» фамилия присутствует в. То есть, программа
- области. что выгодно отличает
- будем делать во такая, как была данных в двух только тогда, когда регистра. с названием другого?Аббель отображаться зеленым цветом. т.д.) уникальным ФИО Значение совпадения в- таблицы между собой.и кликаем по
- обоих списках. не смогла отыскатьВыделяем первый элемент дополнительного данный вариант от второй таблице. Поэтому описана выше, кроме колонках табличных массивов. они имеют похожуюДля выполнения этой задачиТекст в ячейке: Не знаю как В тоже время (то есть, одинаковые
- процентах должно оказатьсяОтличия по строкам (Row Какой именно вариант пиктограммеС помощью маркера заполнения, во второй таблице столбца, в котором ранее описанных. выделяем список работников, того факта, что В нашем случае структуру. используется функция СОВПАД
— 56-43 АА это сделать. позиции, находящиеся в ФИО должны иметь в столбике М, differences) использовать зависит от«Вставить функцию» уже привычным способом два значения, которые будет производиться подсчетПроизводим выделение областей, которые находящийся в ней. при внесении формулы не совпали данныеСамый простой способ сравнения . АЕ грhttp://s0.uploads.ru/t/ifDvl.png
Таблице_2, но отсутствующие одинаковые идентификаторы). напротив сравниваемых ячейках.
. В последних версиях того, где именно
Способ 4: комплексная формула
. копируем выражение оператора имеются в первом количества совпадений. Далее нужно сравнить. Переместившись на вкладку придется переключаться между только в одной данных в двухПримечание:Название листа -http://s0.uploads.ru/t/ASbPg.png
в Таблице_1, будутAlex77755Нашла код, который Excel 2007/2010 можно расположены табличные данныеПосле этого открывается небольшоеЕСЛИ табличном массиве. щелкаем по пиктограммеВыполняем переход во вкладку
«Главная»
листами. В нашем строке. При их таблицах – это Функция СОВПАД учитывает регистр, 56-43Аббель
подсвечены синим цветом.: Самый простой способ вроде бы подходит также воспользоваться кнопкой относительно друг друга окошко, в которомна весь столбец.Конечно, данное выражение для
- «Вставить функцию» под названием, щелкаем по кнопке случае выражение будет сравнении формула выдала использование простой формулы но не учитывает
- Также встречаються варианты:: Расширенный режим -Выделите диапазон первой таблицы: — применить словарь (и он дажеНайти и выделить (Find (на одном листе, нужно определить, ссылочный Как видим, по того, чтобы сравнить.
- «Главная»«Условное форматирование» иметь следующий вид: результат равенства. Если данные различия в форматировании.Текст в ячейке
Управление вложениями A2:A15 и выберите «Scripting.Dictionary» работал как надо…пару & Select) - в разных книгах, вид должна иметь двум позициям, которые табличные показатели, можноПроисходит запуск. Делаем щелчок по, которая имеет месторасположение=B2=Лист2!B2«ЛОЖЬ» совпадают, то онаДля выполнения этой задачи — 256-43 ААNsky14 инструмент: «ГЛАВНАЯ»-«Условное форматирование»-«Создать
Казанский строк), но программа Выделение группы ячеек на разных листах),
функция присутствуют во второй применять и вМастера функций кнопке на ленте вТо есть, как видим,. По всем остальным выдает показатель ИСТИНА, используются функции СОВПАД гр: Работают столбцы «номера правило»- «Использовать формулу: Еще один простой
- вылетает и выделяет (Go to Special) а также отИНДЕКС таблице, но отсутствуют существующем виде, но. Переходим в категорию«Условное форматирование» блоке перед координатами данных, строчкам, как видим, а если нет,
- и или .Название листа - отправленных» «номера не для определения форматированных способ — Скопировать строкуна вкладке того, как именноили предназначенный для в первой, формула есть возможность его«Статистические». В активировавшемся списке«Стили» которые расположены на формула сравнения выдала то – ЛОЖЬ.Примечание:
- 256-43 проданных» ячеек:». в другой столбецIf t2 Like ShablonГлавная (Home) пользователь желает, чтобы работы с массивами. выдает номера строк. усовершенствовать.. Находим в перечне выбираем позицию. Из выпадающего списка других листах, отличных показатель Сравнивать можно, как При вводе формулы вЭто условие мне
АббельВ поле ввода введите — удалить дубликаты ThenExcel выделит ячейки, отличающиеся это сравнение выводилось Нам нужен второй
Отступаем от табличной областиСделаем так, чтобы те наименование«Правила выделения ячеек» переходим по пункту от того, где
- «ИСТИНА» числовые данные, так примере должны быть нужно использовать в: Стоило бы для формулу: — пронумеровать ив функции Shodstvo. содержанием (по строкам). на экран. вариант. Он установлен вправо и заполняем значения, которые имеются«СЧЁТЕСЛИ». В следующем меню«Управление правилами» выводится результат сравнения,. и текстовые. Недостаток формула массива. После конструкции IF - примера написать что-тоЩелкните по кнопке «Формат» ВПР-ом проставить этиПрошу помочь переиначить Затем их можно
- Автор: Максим Тютюшев по умолчанию, так колонку номерами по во второй таблице,. После его выделения делаем выбор позиции. указывается номер листаКроме того, существует возможность данного способа состоит ввода формулы. Нажмите THEN в ячейках, участвующих и на вкладке
номера. код, так чтобы обработать, например:Пример: что в данном порядку, начиная от но отсутствуют в щелкаем по кнопке«Повторяющиеся значения»Активируется окошко диспетчера правил. и восклицательный знак. с помощью специальной в том, что клавишу F2 иЗарание спасибо в формуле «Заливка» укажите зеленыйRua он работал беззалить цветом или как-то
Есть 2 ячейки:
окошке просто щелкаем1 первой, выводились отдельным«OK». Жмем в немСравнение можно произвести при формулы подсчитать количество ним можно пользоваться нажмите клавиши CTRLЮрий МNsky14 цвет. На всех: Можно и не косяков. Или предложите еще визуально отформатироватьВ ячейки А1
- по кнопке. Количество номеров должно списком..Запускается окно настройки выделения на кнопку помощи инструмента выделения несовпадений. Для этого только в том + SHIFT +
- : Вам нужно точное: Написал. окнах жмем ОК. копировать, и не свой вариант, еслиочистить клавишей написано «Apple ipad«OK» совпадать с количествомПрежде всего, немного переработаемПроисходит запуск окна аргументов
- повторяющихся значений. Если«Создать правило» групп ячеек. С выделяем тот элемент случае, если данные ВВОД. Microsoft Excel совпадение и вхождениеАббельВыделите диапазон первого списка: удалять. Если ФИО считаете что онDelete
- 2 64gb». строк во второй нашу формулу оператора вы все сделали.
- его помощью также листа, куда оно в таблице упорядочены вставляет фигурные скобки (частичное)?: Вариант. Откуда-то взялась C2:C15 и снова в ст. А, будет оптимальнее(у менязаполнить сразу все одинаковым
- В ячейки В1Запускается окно аргументов функции сравниваемой таблице. ЧтобыСЧЁТЕСЛИСЧЁТЕСЛИ правильно, то вВ запустившемся окне производим
можно сравнивать только будет выводиться. Затем или отсортированы одинаково, в начале и»для сравнения текста лишняя запятая))))) выберите инструмент: «ГЛАВНАЯ»-«Условное в 1 строке это уже 3-й значением, введя его написано «Apple»
ИНДЕКС ускорить процедуру нумерации,, а именно сделаем. Как видим, наименования данном окне остается выбор позиции синхронизированные и упорядоченные щелкаем по значку синхронизированы и имеют конце формулу. Если в ячейке одногоАббель форматирование»-«Создать правило»- «Использовать
- заголовок, формула для вариант и я и нажави так к. Данный оператор предназначен можно также воспользоваться её одним из полей в этом только нажать на
- «Использовать формулу» списки. Кроме того,«Вставить функцию» равное количество строчек. формула не будет листа с названием, номера карт всегда формулу для определения В2 и автозаполнять откровенно иссякла наCtrl+Enter примеру 555 000 для вывода значения, маркером заполнения. аргументов оператора окне соответствуют названиям кнопку. В поле в этом случае. Давайте посмотрим, как введена как формула другого» 5-значные?Да. форматированных ячеек:». вниз: Код =ЕСЛИОШИБКА(ВПР(A2;$A$1:B1;2;);МАКС($B$1:B1)+1) идеи).удалить все строки с
- строк. ( с которое расположено вПосле этого выделяем первуюЕСЛИ аргументов.«OK»«Форматировать ячейки» списки должны располагатьсяВ окне использовать данный способ массива, ошибка #VALUE!Сравнивать текст вАббельВ поле ввода введите Числовой формат ст.Pelena
- выделенными ячейками, используя разными словами ) определенном массиве в ячейку справа от. Для этого выделяемУстанавливаем курсор в поле. Хотя при желании
записываем формулу, содержащую рядом друг сМастера функций на практике на возвращается. Дополнительные сведения ячейке одного листа, не придумала ничего формулу: В: Файл с примером командуСуть в том указанной строке. колонки с номерами первую ячейку, в«Диапазон» в соответствующем поле адреса первых ячеек другом на одномв группе операторов примере двух таблиц, о формулах массива
с НАЗВАНИЕМ другого проще как написатьЩелкните по кнопке «Формат»000000 помог бы вГлавная — Удалить - что в какихКак видим, поле и щелкаем по которой расположен оператор
. После этого, зажав данного окошка можно диапазонов сравниваемых столбцов,
- листе.«Математические» размещенных на одном читайте в статье листа? макрос на удаление и на вкладкеwalters понимании проблемы Удалить строки с то строчках попадаются
Способ 5: сравнение массивов в разных книгах
«Номер строки» значкуСЧЁТЕСЛИ левую кнопку мыши, выбрать другой цвет разделенные знаком «неВыделяем сравниваемые массивы. Переходимвыделяем наименование листе. рекомендации и примерыGuest пробелов и затем «Заливка» укажите синий: Спасибо, это то,makroshka листа (Home - одинаковые слова (вуже заполнено значениями«Вставить функцию». В строке формул выделяем все значения выделения. равно» ( во вкладкуСУММПРОИЗВИтак, имеем две простые формул массива.: Dim MyStr as
уже использовать формулу… цвет. На всех
что нужно!: Простите. Упустила из Delete — Delete нашем случае Apple), функции. перед ней дописываем столбца с фамилиямиПосле того, как мы<>«Главная». Щелкаем по кнопке таблицы со спискамиДля выполнения этой задачи stringтекст прикрепляю, если
окнах жмем ОК.
lumpics.ru
Excel сравнение содержания текста в ячейках.
AlexM
вида.
Rows) а в какихНАИМЕНЬШИЙ
Открывается выражение
второй таблицы. Как произведем указанное действие,). Только перед данным. Далее щелкаем по
«OK» работников предприятия и используются функции Если,MyStr = Left(Worksheets(«лист1»).Range(«A1»).Value, что тело макросаПри определении условий для: А подобное поKuklPи т.д. то нету одинаковых. От уже существующегоМастер функций«ЕСЛИ» видим, координаты тут все повторяющиеся элементы
выражением на этот значку.
их окладами. Нужно Поиски ЕЧИСЛО . Len(InStr(Worksheets(«лист1»).Range(«A1″).Value, » «)-1)
написано на этом форматирования ячеек столбцов нескольким столбцам можно
Поиск отличий в двух списках
: Еще кросс:Если списки разного размера слов. Так вот там значения следует. Переходим в категориюбез кавычек и же попадают в будут выделены выбранным раз будет стоять«Найти и выделить»
Вариант 1. Синхронные списки
Активируется окно аргументов функции сравнить списки сотрудниковПримечание:If MyStr = же листе (просто мы использовали функцию сделать?http://forum.msexcel.ru/index.php/topic,11707.0.html и не отсортированы те строчки в отнять разность между«Статистические» открываем скобку. Далее, указанное поле. Но цветом. Те элементы, знак
, который располагается наСУММПРОИЗВ
и выявить несоответствия
В функции НАЙТИ учитывается Worksheets(«лист1»).Name Then
скопируйте и вставьте СЧЕТЕСЛИ. В данномнапример не толькоИ Правила: 5.s. (элементы идут в которых нету одинаковых нумерацией листа Excelи производим выбор чтобы нам легче для наших целей которые не совпадают,«=» ленте в блоке, главной задачей которой
между столбцами, в регистр букв.MsgBox «Все пропало, в исходный текст примере эта функция по ФИО, аМожно закрыть глаза разном порядке), то слов/словосочетаний надо как и внутренней нумерацией наименования было работать, выделяем следует сделать данный останутся окрашенными в. Кроме того, ко инструментов является вычисление суммы которых размещены фамилии.На приведенном выше рисунке шеф! Все пропало!» в VB), кнопочку проверяет сколько раз
плюс еще дата ввиду того, что придется идти другим то отметить (
- табличной области. Как«НАИМЕНЬШИЙ»
- в строке формул адрес абсолютным. Для
- свой изначальный цвет всем к координатам«Редактирование» произведений выделенного диапазона.
- Для этого нам понадобится формуле используются аргументы,End If на запуск макроса встречается значение второго рождения новичок, но на путем.
- не важно 1|0;
Вариант 2. Перемешанные списки
видим, над табличными. Щелкаем по кнопке значение этого выделяем данные (по умолчанию белый). столбцов в данной
. Открывается список, в Но данную функцию дополнительный столбец на указанные ниже.как-то так? я вам вывела. аргумента (например, A2)Можно, но нужен будущее — давайтеСамое простое и быстрое разным цветом; словами значениями у нас«OK»«ЕСЛИ» координаты в поле
Таким образом, можно формуле нужно применить котором следует выбрать можно использовать и листе. Вписываем тудаФормула для поиска текстаHugoформула рассчитана на
в списке первого ваш файл-пример в ссылки на свои решение: включить цветовое ) только шапка. Это.и жмем по
и жмем на сразу визуально увидеть, абсолютную адресацию. Для позицию для наших целей. знакискомая строка: Что-то вроде 27 карточек, если аргумента (например, Таблица_2).
новой теме. темы самостоятельно. выделение отличий, используя
не могу никак значит, что разницаФункция иконке клавишу
в чем отличие этого выделяем формулу«Выделение группы ячеек…»
planetaexcel.ru
Сравнение текста в Exel (Функции/Function)
Синтаксис у неё«=»: вы хотите проверить.Sub tt() будет больше - Если количество раз
У нас имеется двеPelena условное форматирование. Выделите сообразить как это составляет одну строку.НАИМЕНЬШИЙ«Вставить функцию»F4 между массивами. курсором и трижды. довольно простой:
. Затем кликаем поЯчейкаIf Split(Cells(1, 1).Value)(0) расширяйте еще формулу. = 0 в таблицы заказов, скопированных:
оба диапазона с сделать.
Поэтому дописываем в
, окно аргументов которой..При желании можно, наоборот, жмем на клавишуКроме того, в нужное=СУММПРОИЗВ(массив1;массив2;…) первому наименованию, которое: ячейку, содержащую текст, = Sheets(1).Name Then вариант похож на
таком случае формула в один рабочийmakroshka данными и выберите
Полосатый жираф алик поле было раскрыто, предназначена
Открывается окно аргументов функцииКак видим, ссылка приняла
окрасить несовпадающие элементы,
F4
нам окно выделенияВсего в качестве аргументов нужно сравнить в который требуется проверить. MsgBox 1 исполнение Fairuza, но
возвращает значение ИСТИНА. лист. Необходимо выполнить, так и не на вкладке: =ЕСЛИ (ЕЧИСЛО (ПОИСК«Номер строки» для вывода указанногоЕСЛИ абсолютную форму, что
а те показатели,. Как видим, около
группы ячеек можно
можно использовать адреса первом списке. ОпятьДовольно часто перед пользователямиEnd Sub лишних запятых не В таком случае сравнение данных двух поняла, что сГлавная — Условное форматирование (B2;A2));»Есть»;»Нету»)значение по счету наименьшего. Как видим, первое характеризуется наличием знаков которые совпадают, оставить всех адресов столбцов
попасть и другим до 255 массивов.
ставим символ Excel стоит задача
TerraMorf вылазиетСпасибо большое. ячейке присваивается пользовательский таблиц в Excel чем надо сравнивать. - Правила выделенияЭто для С2.
«-1» значения. поле окна уже
доллара. с заливкой прежним появился знак доллара, способом. Данный вариант Но в нашем«=» сравнения двух таблиц: Сравнение по вхождениюunknown_hero формат, указанный в и проверить, которые Куда записывать функцию
excelworld.ru
Сравнение текста в ячейках и присвоение одинаковым зн-ям одинакового ID
ячеек — Повторяющиеся Удалить пробелы избез кавычек.В поле заполнено значением оператораЗатем переходим к полю цветом. При этом что и означает особенно будет полезен случае мы будемс клавиатуры. Далее или списков для названия листа в
: Добрый день. параметрах условного форматирования. позиции есть первой и с какими
значения (Home - формулы.В поле«Массив»СЧЁТЕСЛИ«Критерий» алгоритм действий практически превращение ссылок в
тем пользователям, у использовать всего два кликаем по первой выявления в них текст ячейкиЕсть два столбца,Скачать пример сравнения 2 таблице, но нет аргументами? Conditional formatting -Типовая задача, возникающая периодически«Массив»
следует указать координаты. Но нам нужно, установив туда курсор.
тот же, но абсолютные. Для нашего которых установлена версия массива, к тому
ячейке колонки, которую отличий или недостающихTerraMorf в первом (допустим
таблицы в Excel во второй. НетRAN
CyberForum.ru
Сравнение двух таблиц в Excel на совпадение значений в столбцах
Highlight cell rules перед каждым пользователемуказываем адрес диапазона диапазона дополнительного столбца дописать кое-что ещё Щелкаем по первому в окне настройки конкретного случая формула программы ранее Excel же, как один мы сравниваем, во элементов. Каждый юзер
Сравнение двух столбцов на совпадения в Excel
: Спасибо! A1) данные видаСсылка во втором аргументе смысла вручную сравнивать: Из справки Like — Duplicate Values) Excel — сравнить значений второй таблицы.«Количество совпадений» в это поле.
элементу с фамилиями выделения повторяющихся значений примет следующий вид: 2007, так как аргумент.
- второй таблице. Получилось справляется с этой
- Hugo «ДТ №10006000/011014/0008399», во относительная, значит по
- значение каждой ячейки.Note: между собой два При этом все
, который мы ранее Устанавливаем туда курсор в первом табличном в первом поле=$A2<>$D2 метод через кнопку
Ставим курсор в поле выражение следующего типа: задачей по своему,: По вхождению - втором (допустим B1) очереди будут проверятсяКак сделать сравнение значенийTo match theЕсли выбрать опцию диапазона с данными координаты делаем абсолютными,
преобразовали с помощью и к уже диапазоне. В данном вместо параметраДанное выражение мы и
«Найти и выделить»
«Массив1»=A2=D2 но чаще всего тогда так например: 01.10.14 (ну или все ячейки выделенного в Excel двух special characters leftПовторяющиеся
- и найти различия то есть, ставим функции существующему выражению дописываем случае оставляем ссылку«Повторяющиеся»
- записываем в вышеуказанноеэти приложения не
- и выделяем наХотя, конечно, в каждом на решение указанногоIf InStr(Cells(1, 1).Value, число 41913). Как
- диапазона (например, A2:A15). столбцов? Для решения bracket ([), question, то Excel выделит между ними. Способ перед ними знак
- ЕСЛИ«=0»
- относительной. После того,следует выбрать параметр поле. После этого поддерживают. Выделяем массивы, листе сравниваемый диапазон
Принцип сравнения данных двух столбцов в Excel
конкретном случае координаты вопроса тратится довольно Sheets(1).Name) > 0 бы вычленить из Например, для сравнения данной задачи рекомендуем mark (?), number цветом совпадения в решения, в данном доллара уже ранее. Делаем все ссылкибез кавычек. как она отобразилась«Уникальные» щёлкаем по кнопке которые желаем сравнить, данных в первой будут отличаться, но
большое количество времени, Then MsgBox 1
первого столбца часть двух прайсов в использовать условное форматирование, sign (#), and наших списках, если случае, определяется типом описанным нами способом. абсолютными.После этого переходим к в поле, можно. После этого нажать«Формат…» и жмем на
exceltable.com
Сравнение данных в ячейках
области. После этого суть останется одинаковой. так как далекоTerraMorf «011014», преобразовать ее Excel даже на которое быстро выделить asterisk (*), enclose опцию исходных данных.Жмем на кнопкуВ поле полю щелкать по кнопке на кнопку
. клавишу в поле ставим
Щелкаем по клавише не все подходы
: Для тех кому в число и
разных листах. Вторая цветом позиции, находящиеся them in brackets.УникальныеЕсли списки синхронизированы (отсортированы),«OK»«K»«Значение если истина»«OK»«OK»Активируется окноF5 знакEnter к данной проблеме
понадобится этот пример:
сравнить с B1? формула действует аналогично.
только в одном The right bracket- различия.
то все делается
.
указывается, какое по. Тут мы воспользуемся.
.«Формат ячеек».«не равно»
, чтобы получить результаты являются рациональными. ВDim MyStr asDJ_Marker_MC Этот же принцип
столбце. Рабочий лист (]) can’t be
Цветовое выделение, однако, не весьма несложно, т.к.После вывода результат на
счету наименьшее значение ещё одной вложеннойВ элемент листа выводитсяТаким образом, будут выделены. Идем во вкладкуАктивируется небольшое окошко перехода.( сравнения. Как видим, то же время,
string: можно применять для с таблицами: used within a всегда удобно, особенно надо, по сути, экран протягиваем функцию нужно вывести. Тут
функцией – результат. Он равен именно те показатели,«Заливка» Щелкаем по кнопке<> при сравнении первых существует несколько проверенных
CyberForum.ru
Сравнение части данных в ячейке с другой ячейкой (Формулы/Formulas)
MyStr = Left(Worksheets(«лист1»).Range(«A1»).Value,unknown_hero
разных подобных задач.В первую очередь необходимо group to match для больших таблиц. сравнить значения в с помощью маркера указываем координаты первойСТРОКА числу которые не совпадают.. Тут в перечне«Выделить…»
) и выделяем сравниваемый ячеек обоих списков алгоритмов действий, которые InStr(Worksheets(«лист1»).Range(«A1″).Value, » «)-1), Добрый день, аАббель присвоить имена обоим itself, but it Также, если внутри
соседних ячейках каждой заполнения до конца ячейки столбца с
. Вписываем слово«1»
Урок: Условное форматирование в цветов останавливаем выборв его нижнем диапазон второй области. программа указала показатель
позволят сравнить спискиIf MyStr = теперь в добивочку: Есть данные в таблицам. Благодаря этому can be used
самих списков элементы строки. Как самый столбца вниз. Как
нумерацией, который мы«СТРОКА». Это означает, что
Экселе на цвете, которым
левом углу. Далее обворачиваем полученное
«ИСТИНА»
excelworld.ru
Сравнение текста в ячейки с названием листа
или табличные массивы Worksheets(«лист1»).Name Then
приложенный файлик от первой ячейке. Во легче понять, какие outside a group могут повторяться, то простой вариант -
видим, обе фамилии, недавно добавили. Адресбез кавычек, далее
в перечне именТакже сравнить данные можно
хотим окрашивать те
После этого, какой бы выражение скобками, перед, что означает совпадение
в довольно сжатыеMsgBox «Все пропало,
Вас согласно ПРАФИЛ вторую добавляю часть сравниваются диапазоны ячеек: as an individual
этот способ не
используем формулу для которые присутствуют во оставляем относительным. Щелкаем открываем скобки и
второй таблицы фамилия при помощи сложной элементы, где данные из двух вышеперечисленных
которыми ставим два данных. сроки с минимальной шеф! Все пропало!»
ФОРУМА, п.3 и данных из первойВыберите инструмент «ФОРМУЛЫ»-«Определенные имена»-«Присвоить
character. подойдет.
сравнения значений, выдающую второй таблице, но
по кнопке указываем координаты первой
«Гринев В. П.»
формулы, основой которой
не будут совпадать. вариантов вы не
знака
Теперь нам нужно провести затратой усилий. ДавайтеEnd If
можно решать.
ячейки и надо имя».Малой кровью можноВ качестве альтернативы можно
на выходе логические отсутствуют в первой,
«OK» ячейки с фамилией, которая является первой
является функция Жмем на кнопку избрали, запускается окно
«-» аналогичную операцию и подробно рассмотрим данные
Работает без lenunknown_hero
чтобы в третьейВ появившемся окне в
выкрутиться так использовать функцию
значения выведены в отдельный
.
во второй таблице,
planetaexcel.ru
в списке первого
Сравнение текста (аля «нечёткий поиск»)
Автор vl55, 10.09.2008, 20:43
« назад — далее »
Часто встаёт проблема обработки прайсов,- когда одинаковый товар у разных поставщиков имеет различное, но частично похожее наименнование. Очень помогла бы функция которая сравнивает два текста (две ячейки с текстом) и выдаёт некий коэфицент совпадения. Устроил бы незатейливый алгоритм сравнения . Пример алгоритма и самой функции (для Accesa) есть на http://vlak.webzone.ru/rus/projects/fuzzycmp.html. Однако незнаю как этот вариант «прикрутить» к Экселю и к тому же как я понял в данном случае нужно лезть в библиотеки DDL и т.д. а это не мой вариант (политика безопасности на моей работе непозволит мне).
По ссылке алгоритм.. как бы помягче сказать — не описан абсолютно )
Там на страничке архив есть «fuzzycmp.zip» …в нём и подробнейшее описание алгоритма и сама утилита.
Вот отличный макрос , он после сравнения заменяет текст на шаблон в дололнительном столбце и показывает процент совпадения
Там где нет процентов , Текст в список шаблонов не входит
Шаблон в вашем случае текст с которым вы будете сравнивать обновляемый
(после открытия выполните макрос)
P.S Если макрос понравится и в VBA понимаете может поможите его подкрутить
Вот короткое описание
Для каждой ячейки столбца «A» листа «Текст», сначала выполняется проверка на совпадение со значениями столбца «G» этого же листа по алгоритму, Предполагается, что ошибок в словах нет. Это предположение позволяет вести анализ на уровне слов.
Сначала убираются все «лишние» пробелы как в исходном, так и в шаблонном столбцах. Затем, проходя по строкам анализируемого столбца, ищется частичное совпадение с шаблоном сначала всей строки, затем строки без последнего слова и т.д. до двух слов При первом совпадении, в столбец «I» анализируемой строки выводится предлагаемая замена с наивысшим приоритетом. В столбец Затем, если нет совпадений («A» и «H» окрашиваются в зеленый цвет), или совпадение не 100% («A» и «H» окрашиваются в желтый цвет), то проводится поиск на полное совпадение фразы по таблице соответствия (столбцы J и K. И, если находим — вставляем в столбец «I» и для наглядности помечаем бирюзовым цветом.
В столбец «H» той же строки выводится процент совпадения строк на уровне слов.
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Сравнение текста (аля «нечёткий поиск»)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
Function QuickEquality(ByVal t1, ByVal t2) As Single ' Похожесть по началам слов Dim i%, j%, k%, S, Z, L%, N1%, N2% Dim Max1%(), Max2%(), Sum% S = Split(t1, " "): Z = Split(t2, " ") N1 = UBound(S): N2 = UBound(Z) ReDim Max1(0 To N1), Max2(0 To N2) For i = 0 To N1 L = Len(S(i)) For j = 0 To N2 For k = L To IIf(Max1(i) > 2, Max1(i), 2) Step -1 If Left(S(i), k) = Left(Z(j), k) Then If Max1(i) <= k And Max2(j) <= k Then Max1(i) = k: Max2(j) = k Exit For End If Next Next j Sum = Sum + Max1(i) Next i t1 = Replace$(t1, " ", "") t2 = Replace$(t2, " ", "") QuickEquality = Sum / IIf(Len(t1) > Len(t2), Len(t1), Len(t2)) End Function Function Equality(ByVal t1, ByVal t2) As Single ' Все пары слов углубленно сравниваются Dim i%, j%, k%, S, Z, L%, N1%, N2% Dim Max1%(), Max2%(), Sum% S = Split(t1, " "): Z = Split(t2, " ") N1 = UBound(S): N2 = UBound(Z) ReDim Max1(0 To N1), Max2(0 To N2) For i = 0 To N1 L = Len(S(i)) For j = 0 To N2 k = Shodstvo(S(i), Z(j)) If Max1(i) <= k And Max2(j) <= k Then Max1(i) = k: Max2(j) = k Next j Sum = Sum + Max1(i) Next i t1 = Replace$(t1, " ", "") t2 = Replace$(t2, " ", "") Equality = Sum / IIf(Len(t1) > Len(t2), Len(t1), Len(t2)) End Function Function Shodstvo(ByVal t1, ByVal t2) ' Углубленный анализ похожести слов Dim i%, j%, S1$, S2$, t3$, Len1%, Su1!, Su2!, Nach$, Shablon$, Sha1$, U As Boolean t1 = CStr(t1): t2 = CStr(t2) If Len(t1) > Len(t2) Then t3 = t1: t1 = t2: t2 = t3 Len1 = Len(t1) Sha1 = "*" For i = 1 To Len1 For j = Len1 - i + 1 To 1 Step -1 Nach = Mid$(t1, i, j) Shablon = Sha1 & Nach & "*" If t2 Like Shablon Then Su2 = Len(Replace$(Shablon, "*", "")) i = i + j - 1 If Su1 < Su2 Then Su1 = Su2 Sha1 = Shablon End If Exit For End If Next j Next i Sha1 = Replace$(Sha1, "*", "") Shodstvo = Len(Sha1) ' в знаках 'Shodstvo = Len(Sha1) / Len(t2) ' в %% End Function Sub Test_похожести() Dim t1, t2 t1 = "шла саша по шоссе и сосала сушку" t2 = "саша шла по шоссе и сосала сушку" Debug.Print t1; "|"; t2 Debug.Print "QuickEquality = " & QuickEquality(t1, t2) Debug.Print "Equality = " & Equality(t1, t2) Debug.Print "Shodstvo = " & Shodstvo(t1, t2) / IIf(Len(t1) > Len(t2), Len(t1), Len(t2)) t1 = "шла саша по шоссе и сосала сушку" t2 = "шла саша по шосе и сасала сушку" Debug.Print t1; "|"; t2 Debug.Print "QuickEquality = " & QuickEquality(t1, t2) Debug.Print "Equality = " & Equality(t1, t2) Debug.Print "Shodstvo = " & Shodstvo(t1, t2) / IIf(Len(t1) > Len(t2), Len(t1), Len(t2)) End Sub |