Сравнение числа с массивом excel

Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.

Предыдущая глава       Оглавление          Следующая глава

Выборки, основанные на одном или нескольких условиях. Ряд функций Excel используют операторы сравнения. Например, СУММЕСЛИ, СУММЕСЛИМН, СЧЁТЕСЛИ, СЧЁТЕСЛИМН, СРЗНАЧЕСЛИ и СРЗНАЧЕСЛИМН. Эти функции осуществляют выборки на основе одного или нескольких условий (критериев). Проблема в том, что эти функции могут только складывать, подсчитывать количество, и находить среднее. А если вы хотите наложить условия на поиск, например, максимального значения или стандартного отклонения? В этих случаях, поскольку не существует встроенной функции, вы должны изобрести формулу массива. Нередко это связано с использованием оператора сравнения массивов. Первый пример в этой главе, показывает, как рассчитать минимальное значения при одном условии.

Воспользуемся функцией ЕСЛИ, чтобы выбрать элементы массива, отвечающие условию. На рис. 4.1 в левой таблице присутствуют столбец с названиями городов и столбец с временем. Требуется найти минимальное время для каждого города и поместить это значение в соответствующую ячейку правой таблицы. Условие для выборки – название города. Если вы используете функцию МИН, то сможете найти минимальное значение столбца В. Но как вы выберите только те числа, что относятся только к Окленду? И как вам скопировать формулы вниз по колонке? Поскольку в Excel нет встроенной функции МИНЕСЛИ, вам необходимо написать оригинальную формулу, совмещающую функции ЕСЛИ и МИН.

Рис. 4.1. Цель формулы: выбрать минимальное время для каждого города

Скачать заметку в формате Word или pdf в формате Excel2013

Как показано на рис. 4.2, вам следует начать ввод формулы в ячейку E3 с функции МИН. Но вы же не можете поместить в аргумент число1 все значения столбца B!? Вы хотите отобрать только те значения, которые относятся к Окленду.

Рис. 4.2. Начните с ввода функции МИН

Как показано на рис. 4.3, на следующем этапе введите функцию ЕСЛИ в качестве аргумента число1 для МИН. Вы вложили ЕСЛИ внутрь МИН.

Рис. 4.3. Добавьте ЕСЛИ внутрь МИН

Разместив курсор в месте введения аргумента лог_выражение функции ЕСЛИ (рис. 4.4), вы выделяете диапазон с названиями городов А3:А8, а затем нажимаете F4, чтобы сделать ссылки на ячейки абсолютными (подробнее см., например, Относительные, абсолютные и смешанные ссылки на ячейки в Excel). Затем вы набираете сравнительный оператор – знак равенства. Наконец, вы выделите ячейку слева от формулы – D3, оставляя ссылку на нее относительной. Сформулированное условие позволит выбрать только Окленды при просмотре диапазона А3:А8.

Рис. 4.4. Создайте оператор массива в аргументе лог_выражение функции ЕСЛИ

Итак, вы создали оператор массива с помощью оператора сравнения. В любой момент обработки массива оператор массива является оператором сравнения, так что результатом его работы будет массив, состоящий из значений ИСТИНА и ЛОЖЬ. Чтобы убедиться в этом, выделите массив (для этого щелкните во всплывающей подсказке на аргумент лог_выражение) и нажмите F9 (рис. 4.5). Обычно вы используете один аргумент лог_выражение, возвращающее либо ИСТИНУ, либо ЛОЖЬ; здесь же результирующий массив вернет несколько значений ИСТИНЫ и ЛЖИ, так что функция МИН выберет минимальное число только для тех городов, которые соответствуют значению ИСТИНА.

Рис. 4.5. Чтобы увидеть массив, состоящий из значений ИСТИНА и ЛОЖь, щелкните во всплывающей подсказке на аргумент лог_выражение и нажмите F9

Надеюсь, вы не забыли (см. главу 2), чтобы «не испортить» формулу после F9 нажмите Ctrl+Z, и формула вернется в исходное состояние.

Как показано на рис. 4.7, далее следует ввести точку с запятой, чтобы перейти к вводу аргумента значение_если_истина функции ЕСЛИ (обратите внимание, что во всплывающей подсказке выделился второй аргумент функции ЕСЛИ). Ведите диапазон В3:В8 и нажмите F4. Выделенный диапазон должен иметь такой же размер, как и массив аргумента лог_выражение (в нашем случае в каждом массиве по 6 элементов). На этом ввод можно завершить, так как аргумент значение_если_ложь является необязательным, и вы, действительно, не хотите что-то считать, для тех ячеек, где аргумента лог_выражение принимает значение ЛОЖЬ. Функция МИН запрограммирована так, что проигнорирует логические значения.

Рис. 4.7. Введите диапазон в аргумент значение_если_истина

Как только вы ввели закрывающую скобку функции ЕСЛИ, всплывающая подсказка «сообразила», что ввод функции ЕСЛИ завершен, и стала показывать синтаксис функции МИН (рис. 4.8). Обратите внимание, что вся функция ЕСЛИ разместилась в аргументе число1 функции МИН.

Рис. 4.8. Функция ЕСЛИ заняла место число1 среди аргументов функции МИН

Чтобы увидеть массив, возвращаемый функцией ЕСЛИ, во всплывающей подсказке щелкните на аргумент1, и нажмите F9 (рис. 4.9). Видно, что массив вернул 4 ЛОЖНЫХ логических значения, когда город не совпадает с Oakland и два числа – 9 и 6 – когда город совпадает с Oakland. Это удивительное использование функции ЕСЛИ позволяет отфильтровать значения, которые вам не нужны и найти минимум только среду «нужных» значений. Аналогичным образом вы можете использовать функцию ЕСЛИ и в других агрегатных функций, таких как МАКС и СТАНДОТКЛОН (СТАНДОТКЛОН.В и СТАНДОТКЛОН.Г в версии Excel2010).

Рис. 4.9. Во всплывающей подсказке щелкните на аргумент1, и нажмите F9, чтобы увидеть результирующий массив

Введите вторую закрывающую скобку (для функции МИН). Чтобы убедится, что функция ЕСЛИ не была изначально запрограммирована для обработки массивов, поместите курсор обратно в аргумент лог_выражение функции ЕСЛИ (кликните во всплывающей подсказке на этом аргументе, чтобы выделить содержимое, относящееся к нему). Обратите внимание, что весь массив «сидит» в аргументе лог_выражение (рис. 4.10). Т.е. Excel не понимает, что перед ним функция массива, эта функция не была изначально запрограммирована для обработки массивов, поэтому чтобы завершить ввод формулы в ячейку нажмите Ctrl+Shift+Enter. После этого Excel поместит фигурные скобки в начале и в конце формулы.

Рис. 4.10. Функция ЕСЛИ изначально не предназначена для работы с массивами, поэтому для корректного ввода формулы нажмите Ctrl+Shift+Enter

Вы можете скопировать формулы массива вниз столбца; фигурные скобки также копируются (рис. 4.12). Если вы измените исходные данные (названия городов и/или время), формулы массива отработают эти изменения и немедленно покажут новый результат.

Рис. 4.12 Формулу массива можно «протащить» вниз по столбцу

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

Функции для работы с базами данных

В Excel есть группа из 12 функций для работы с базами данных (их еще называют БД-функции). Эти функции могут производить расчеты на основе критериев. Например, ДМИН, ДМАКС, БДСУММ. Эти функции отлично справятся с работой, если у вас один-единственный расчет, а колонки имеют заголовки. На рис. 4.13 показано, как можно использовать функцию ДМИН для вычисления минимального времени по городу Окленд. Преимущество БД-функций заключается в том, что если вам нужно сделать единственное вычисление, например, найти минимальное время для Окленда (а по Сиэтлу и др. не интересует), то ДМИН создать проще, чем описанную выше =МИН(ЕСЛИ()) формулу массива. Да и работать ДМИН будет быстрее, чем формула массива (что важно при больших объемах данных). К недостатку БД-функции можно отнести требование формировать аргумент критерий из двух полей: заголовка и собственно критерия (рис. 4.14).

Рис. 4.13. Функция ДМИН

Рис. 4.14. Аргумент критерий должен содержать заголовок (D2) и критерий (D3)

На рис. 4.15 показано, во что может превратиться конструкция с ДМИН, если вам необходимо извлечь данные для нескольких городов. К тому же вам не удастся «протянуть» формулу вдоль колонки. На рис. 4.15 показаны формулы, которые необходимые ввести для каждого города.

Рис. 4.15. «Протащить» БД-функцию по колонке не получится

Если бы вам требовалось извлечь минимальное время для большого числа городов, функция ДМИН доставила бы вам много хлопот. Рис. 4.16 показывает метод, который использует БД-функцию совместно с опцией Excel Таблицей данных для облегчения выборки по большому количеству городов (в главе 21 Таблицы данных рассматриваются более подробно).

Рис. 4.16. БД-функция и Таблица данных, работая вместе, могут заменить функцию массива

Чтобы получить результат как на рис. 4.16, выполните следующее:

Шаг 1.       Создайте формулу ДМИН в ячейке Е3.

Шаг 2.       Поместите названия городов в ячейки D6:D8.

Шаг 3.       В ячейке Е5 создайте ссылку на ячейку Е3.

Шаг 4.       Выделите область D5:Е8.

Шаг 5.       Откройте диалоговое окно Таблицы данных, для чего нажмите Alt Д, а затем Т, или пройдите по меню Данные — Работа с данными — Анализ «что если» — Таблица данных

Шаг 6.       Введите D3 в область «Подставлять значения по строкам в:» (всё равно, какую ссылку вы введете – абсолютную или относительную).

Итак, когда использовать ДМИН, а когда формулу массива МИН(ЕСЛИ(…))? Если вам нужно выполнить единственное вычисление, и данные у вас организованы надлежащим образом (имеются заголовки), используйте ДМИН. Если у вас много вычислений и/или данные не организованы для быстрого использования БД-функций, воспользуйтесь формулой массива. Рассмотрите также возможность совместного использования БД-функции и инструмента Таблица данных.

Сводные таблицы

Если вам не требуется, чтобы после внесения изменений в исходные данные, результаты мгновенно обновлялись (что характерно для формул), рассмотрите возможность использования сводной таблицы, которая позволит применить один или несколько критериев для отбора данных. Почему? Потому что сводные таблицы довольно легко создать. Особенно они будут полезны, если критериев много, и/или они весьма «заковыристые». Этот раздел просматривает одну-вычисление условия. Рис. 4.17 показан завершенный сводная Таблица для расчета минимального с одним условием.

Рис. 4.17. Создать сводную таблицу быстро и просто

Чтобы получить результат как на рис. 4.16, выполните следующее:

Шаг 1.       Убедитесь, что все колонки имеют имена и нет пустых строк и колонок.

Шаг 2.       Встаньте на любую ячейку исходных данных перейдите на вкладку ленты Вставить и в области Таблицы кликните на Сводная таблица.

Шаг 3.       В открывшемся диалоговом окне Создание сводной таблицы включите На существующий лист и в поле Диапазон введите D1.

Шаг 4.       Перетащите Город поле Строки и Время, ч в поле Значения.

Шаг 5.       Щелкните правой кнопкой мыши на одной из ячеек диапазона Е1:Е4 и в контекстном меню выберите опцию Параметры полей значений; в открывшемся окне на вкладке Операция выберите Минимум.

Шаг 6.       Встаньте на любую ячейку сводной таблицы, и сделайте активной вкладку Работа со сводными таблицами – Конструктор; в области Макет кликните на Общие итоги и выберите Отключить для строк и столбцов; там же (в области Макет) кликните на Макет отчета и выберите Показать в табличной форме.

Шаг 7.       Кликните на ячейке D1 и введите Город, кликните на Е1 и введите Минимальное время.

Так что же предпочесть: сводную таблицу или формулу массива? Главный недостаток сводных таблиц заключается в том, что они не обновляются сразу же после изменения исходных данных (нужно встать на любую ячейку сводной таблицы, кликнуть правой кнопкой мыши и выбрать Обновить). В то же время формулы обновляются моментально. Если у вас несколько критериев для отбора, сводные таблицы позволяют проще справиться с ними, перетаскивая поля в области строк, колонн, значений и фильтра. Формулы массива с каждым дополнительным критерием становятся всё сложнее и сложнее. Если вы хотите изменить функцию, в сводной таблице вы просто щелкните правой кнопкой мыши и выберите одну из операций: Сумма, Количество, Минимум… (всего их 11). Используя формулу массива, необходимо перестроить формулу, но… в вашем распоряжении не 11, а 350 функций Excel. Сводные таблице занимают место на листе, их сложнее форматировать. Если в вашем арсенале будет и то, и другое, вы сможете гибче решать стоящие перед вами задачи.

Операции сравнения массивов с несколькими условиями

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

Рис. 4.18. Цель – рассчитать максимальный объем продаж для каждого сотрудника на западе

Вы хотите написать формулу, которую можно «протянуть» по столбцу, также вы хотите, чтобы формула автоматически обновлялась при изменении исходных данных. Вы можете решить задачу с помощью функции МАКС с двумя вложенными функциями ЕСЛИ. Начните ввод формулы в ячейку F5 с функции МАКС; в качестве аргумента число1 вложите функцию ЕСЛИ, которая позволит вам выбрать только те значения, которые соответствуют вашим условиям (рис. 4.19).

Рис. 4.19. Наберите =МАКС(ЕСЛИ(

В качестве первого аргументу лог_выражение функции ЕСЛИ наберите оператор сравнения, спрашивающий: «совпадает ли значение в столбце Регион с условием в ячейке F2?» (рис. 4.20). В качестве результата оператор сравнения $A$3:$A$12=$F$2 вернет последовательность значений ИСТИНА и ЛОЖЬ.

Рис. 4.20. Введите оператор массива

Далее введите разделитель – точка с запятой, и всплывающая подсказка покажет, что вы переместились из области набора аргумента лог_выражение к набору аргумента значение_если_истина (рис. 4.21). Обычно, здесь вводят значение, которые хотят получить в случае если аргумент лог_выражение вернул значение ИСТИНА, но ведь у вас есть еще одно условие, поэтому введите еще одну функцию ЕСЛИ (рис. 4.22). В качестве первого аргумента введите оператор массива, спрашивающий: «совпадает ли значение в столбце Представитель с условием в ячейке Е5?»

Рис. 4.21. Введите разделитель – точку с запятой – это перенесет вас в область набора следующего аргумента

Рис. 4.22. Добавьте вторую функцию ЕСЛИ и оператор массива, проверяющий второе условие

Просто чтобы убедиться, что вторая ЕСЛИ «сидит» в аргументе значение_если_истина первой ЕСЛИ, встаньте курсором на втором слове ЕСЛИ (рис. 4.23). Видно, что во всплывающей подсказке выделился аргумент значение_если_истина. До Excel 2007, вы могли вложить друг в друга до семи функций ЕСЛИ; начиная с Excel 2007 вы можете вложить до 64 функций.

Рис. 4.23. Вторая ЕСЛИ «сидит» в аргументе значение_если_истина первой ЕСЛИ

Введите разделитель – точку с запятой. Теперь вы можете добавлять массив Продажи в качестве аргумента значение_если_истина второй ЕСЛИ (рис. 4.24). Эмпирическое правило для внедрения друг в друга функций ЕСЛИ гласит: продолжайте последовательно вводить функции ЕСЛИ в качестве аргумента лог_выражение предыдущей ЕСЛИ, пока у вас не закончатся условия. Затем вы можете ввести в качестве аргумента значение_если_истина. При этом все значения аргументов значение_если_ложь могут быть опущены, поскольку функция МАКС (и целый ряд других) игнорирует логические значения.

Рис. 4.24. Введите диапазон значений для аргумента значение_если_истина второй ЕСЛИ

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

Рис. 4.25. Черная закрывающая скобка означает, что набор формулы завершен

Если во всплывающей подсказке вы щелкните на аргумент число1, а затем нажмете клавишу F9, то увидите, что две вложенные функции ЕСЛИ отобрали только те значения, которые соответствуют обоим критериям (рис. 4.26). Числа 914 и 610 были выбраны потому, что они относятся, как к региону Запад, так и к представителю Chin.

Рис. 4.26. Две вложенные функции ЕСЛИ отобрали только те значения, которые соответствуют обоим критериям

Примечание: рассмотренный пример демонстрирует И критерии. С И критериями, все условия функций ЕСЛИ должны вернуть значение ИСТИНА. В главе 11, вы познакомитесь с ИЛИ критерием; для истинности всего выражения, по крайней мере, одна ЕСЛИ должна вернуть значение ИСТИНА.

Еще пара слов о том, как работает формула. Каждая из двух функций ЕСЛИ проверяет свой массив: первая – А3:А12 на предмет совпадения со значением в F2, вторая – В3:В12 на совпадение с Е5. Только в том случае, когда оба условия выполнены, функция ЕСЛИ возвращает соответствующие значения из третьего массива – С3:С12. Формула выглядит так:

=МАКС(ЕСЛИ({ИСТИНА:ЛОЖЬ:ИСТИНА:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ИСТИНА}; ЕСЛИ({ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}; {914:355:590:610:506:825:710:280:363:685})))

Мы знаем, что функция ЕСЛИ не была изначально запрограммирована на работу с массивами, поэтому для ввода формулы в ячейку нажмите Ctrl+Shift+Enter. После того, как вы введете формулу массива, убедитесь, что появились фигурные скобки в начале и в конце формулы. Поскольку они есть, вы можете скопировать формулу вниз по столбцу (рис. 4.29).

Рис. 4.29. Формула массива работает в трех ячейках

После того, как вы создали формулу массива, можно задуматься и о том, как решать задачу другим способом? Как и в первом примере этой главы вам придут на помощь функция для работы с базами данных ДМАКС (рис. 4.30) и сводная таблица (рис. 4.31).

Рис. 4.30. ДМАКС легко найдет максимальное значение при двух условиях, а вот копирование формулы по столбцу затруднено

Рис. 4.31. Сводная таблица очень удобна для отыскания максимального значения при двух условиях, но она требует обновления, если исходные данные изменились

Следующий раздел описывает, как использовать оператор сравнения НЕ и некоторые новые удивительные функции Excel доступные с версии 2010 г., которые могут осуществлять выборки на основе условий (например, нахождение минимума или максимума), без Ctrl+Shift+Enter.

Определение минимума при двух условиях, одно из которых НЕ. Рис. 4.32 показаны результаты нескольких гонок на велосипедах BMX (маленькие гоночные велосипеды). Результаты представлены в трех колонках: название трассы, имя гонщика, время прохождения трассы. Задача – найти лучшее время каждого гонщика, но, поскольку трасса PI гораздо короче других, вы не хотите ее учитывать. Это значит, что вам нужна функция массива МИН с двумя условиями: соответствие имени гонщика и «все трассы, кроме PI». Можно использовать функцию МИН с двумя ЕСЛИ. Первая функция ЕСЛИ выбирает только трассы, которые не являются PI (обратите внимание, что оператор сравнения НЕ вводится как два последовательных символа «меньше» и «больше» <>). Вторая функция ЕСЛИ сравнивает имена гонщиков. (Для ввода функции используйте Ctrl+Shift+Enter.)

Рис. 4.32. Цель – найти минимальное время для каждого гонщика на всех трасса, кроме PI

Если вы используете Excel 2010 года или более позднюю версию, вы можете использовать новую функцию АГРЕГАТ, чтобы еще больше упростить расчет, и обойтись без Ctrl+Shift+Enter. (Функция АГРЕГАТ имеет множество различных применений, но в этой книге рассматриваются только те, что относятся к функциям массива.)

Функция АГРЕГАТ

Рассмотрим туже задачу, что и в предыдущем разделе. Как показано на рис. 4.33, если начать вводить в ячейку F5 название функции АГРЕГАТ, всплывающая подсказка предложит выбрать из двух вариантов. Выберите верхний, содержащий массива в качестве третьего аргумента. Наличие массива в качестве аргумент делает функцию АГРЕГАТ способной обрабатывать операции с массивами без использования Ctrl+Shift+Enter.

Рис. 4.33. Начните вводить АГРЕГАТ и подсказка предложит вам выбрать из двух вариантов

Первый аргумент функции АГРЕГАТ позволяет вам выбрать одну из 19 различных функций (рис. 4.34). Функции с 1-й по 13-ю не могут обработать массивы; функции с 14-й по 19-ю – могут. Кажется странным, что функция 5, МИН, не может быть использовано для операций с массивом, но вы сможете обойти эту проблему с помощью функции 15, НАИМЕНЬШИЙ, устанавливая четвертый аргумент (k) равным единице, т.е. выбирая первое наименьшее число, оно же минимальное.

Рис. 4.34. Первый аргумент функции АГРЕГАТ

Второй аргумент позволяет выбрать один из 7 вариантов обработки строк массива (рис. 4.35). Вариант №6 поможет в нашем случае, потому что позволит игнорировать ошибку, когда хотя бы одно из условий не выполняется.

Рис. 4.35. Второй аргумент функции АГРЕГАТ

Итак, начав набирать функцию АГРЕГАТ, выберите во всплывающем меню в качестве первого аргумента функцию 15, НАИМЕНЬШИЙ (рис. 4.36). А в качестве второго аргумента опцию под номером 6 (рис. 4.37).

Рис. 4.36. Выберите в качестве первого аргумента функцию 15, НАИМЕНЬШИЙ

Рис. 4.37. Выберите в качестве второго аргумента опцию 6 – Пропускать ошибочные значения

После ввода разделите – точки с запятой, третий аргумент функции АГРЕГАТ – массив – выделяется полужирным шрифтом (рис. 4.38). Т.е. третий аргумент функции АГРЕГАТ изначально запрограммирован для обработки массива без использования клавиш Ctrl+Shift+Enter (помните, что это верно только для функций с 14-й по 19-ю).

Рис. 4.38. Третий аргумент функции АГРЕГАТ – массив – изначально запрограммирован для обработки без использования клавиш Ctrl+Shift+Enter

Теперь можно в качестве третьего аргумента функции АГРЕГАТ ввести полученную ранее функцию ЕСЛИ (точнее две вложенные функции ЕСЛИ) для отбора по имени гонщика и всем трекам, кроме PI:

ЕСЛИ($A$3:$A$13<>$F$2;ЕСЛИ($B$3:$B$13=E5;$C$3:$C$13)

Заметим, что если у вас есть массив, который помещен в любой из аргументом функции ЕСЛИ ввод формулы требует нажатия Ctrl+Shift+Enter, даже несмотря на то, что саму функцию ЕСЛИ вы поместите внутрь функции, умеющей работать с массивами, например АГРЕГАТ или СУММПРОИЗВ. Образно говоря, функция ЕСЛИ является козырной и бьет другие функции. Если вы стремитесь избежать ввода Ctrl+Shift+Enter, постарайтесь обойтись без ЕСЛИ.

Чтобы проверить это правило, введите формулу:

=АГРЕГАТ(15;6;ЕСЛИ($A$3:$A$13<>$F$2;ЕСЛИ($B$3:$B$13=E5;$C$3:$C$13));1)

Вы получаете ошибку #ЗНАЧ! Если же вы введете формулу с помощью клавиш Ctrl+Shift+Enter, то формула будет работать, но… это признание вашего поражения, так как вспомните, что цель была – придумать формулу массива, которая не требовала нажатия Ctrl+Shift+Enter. Поэтому, если вы хотите остаться верным своей цели, вы должны скорректировать формулу в аргументе массив и избавиться от ЕСЛИ. Решение основано на замечательном свойстве функции АГРЕГАТ пропускать ошибочные значения! Замените ЕСЛИ($A$3:$A$13<>$F$2;ЕСЛИ($B$3:$B$13=E5;$C$3:$C$13) на $C$3:$C$13/(($A$3:$A$13<>$F$2)*($B$3:$B$13=E5)). Заметьте, что в знаменателе вы должны добавить скобки для каждого оператора сравнения, а также дополнительный набор скобок для всего знаменателя.

Вы поместили в числитель массив значений (время), а в знаменатель – произведение двух условий (операторы сравнения массивов). Только в том случае, когда оба условия вернут значение ИСТИНА, знаменатель будет равен единице.[1] Если хотя бы одно сравнение неверно, знаменатель обращается в ноль. Деление на ноль даст ошибку, и функция АГРЕГАТ ее пропустит.

Если вы выделите аргумент массив в формуле АГРЕГАТ и нажмете F9, то увидите результирующий массив (рис. 4.39).

Рис. 4.39. Выделите аргумент массив в формуле АГРЕГАТ (а) и нажмете F9 (б)

Результирующий массив содержит только числа, которые удовлетворяют обоим условиям (И критерий). Фактически ваша формула массива отфильтровала числа, отвечающие обоим условиям. Теперь вы, наверное, понимаете, почему следовало применить деление. Оно привело к возникновению ошибки #ДЕЛ/0! Произведение не подошло бы, так как привело к появлению элементов массива равным нулю. Именно один их этих нулей и выбрала бы функция МИН. В тоже время ошибки #ДЕЛ/0! не составляют проблемы для функции АГРЕГАТ, поскольку второй ее аргумент содержит опцию 6, дающий команду функции пропускать ошибочные значения. Поскольку мы избавились от функции ЕСЛИ внутри функции АГРЕГАТ, ввод нашей формулы не требует нажатия Ctrl+Shift+Enter. Вы с легкостью «протянете» формулу по столбцу F.

Так что же использовать, функцию АГРЕГАТ с двоичными условиями или формулу с МИН и двумя ЕСЛИ? По времени работы и сложности написания эти две конструкции примерно одинаковы. Но… функция АГРЕГАТ не требует нажатия Ctrl+Shift+Enter. Поэтому я предпочту ее.

Посмотрите, как можно решить эту же задачу с использованием ДМИН (рис. 4.41) и сводной таблицы (рис. 4.42). Обратите внимание на фильтр сводной таблицы не позволяет выбрать «НЕ PI». После создания сводной таблицы используйте фильтр в поле Трасса поставьте галочку в Выделить несколько элементов и снимите галочку напротив PI.

Рис. 4.41. Решение с помощью функции ДМИН и Таблицы данных

Рис. 4.42. Решение с помощью сводной таблицы

Использование условий при вычислении стандартного отклонения. Итак, в этой главе вы узнали, как сделать выборки для нахождения минимума или максимума с использованием функции АГРЕГАТ, конструкции ЕСЛИ(ЕСЛИ()), функции базы данных ДМИН или сводной таблицы. Однако, если бы вам потребовалось рассчитать стандартное отклонение вы могли бы использовать соответствующую БД-функцию, сводную таблицу и конструкцию с ЕСЛИ, но не функцию АГРЕГАТ. Почему? Потому что два стандартных отклонения функции АГРЕГАТ (под номерами 7 и 8 ) не могут обработать массивы.

Для расчета стандартного отклонения воспользуйтесь функцией СТАНДОТКЛОН.В (СТАНДОТКЛОН в версии Excel до 2010) и вложенными функциями ЕСЛИ (рис. 4.43).

Рис. 4.43. Вычисление стандартного отклонения с одним условием

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

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

Метод Преимущества Недостатки
Сводные таблицы • Легко создавать, особенно с использованием нескольких критериев.• Легко изменить. • Требует команды Обновить.• Только 11 функций.
Функции для работы с базой данных • Просто создавать• Быстрая работа формул.• Отсутствие Ctrl+Shift+Enter. • Нелегко скопировать.• Данные должны содержать заголовки.
АГРЕГАТ • Результат изменяется сразу при изменении данных.• Легко скопировать формулу по столбцу.• Отсутствие Ctrl+Shift+Enter. • Нелегко создавать.• Время расчета больше, чем у БД-функции.• Всего 19 функций и только 6 из них работают с массивами.
Конструкция с одним или несколькими ЕСЛИ • Результат изменяется сразу при изменении данных.• Легко скопировать формулу по столбцу.• Позволяет воспользоваться 350 формулами Excel. • Требует Ctrl+Shift+Enter.• Нелегко создавать.• Время расчета больше, чем у БД-функции.

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

Рис. 4.44. БД-функция работает быстрее, чем конструкция МИН(ЕСЛИ(ЕСЛИ(…))) и АГРЕГАТ


[1] В Excel есть так называемое неявное преобразование типов. Логическое значение ИСТИНА соответствует числу 1, а ЛОЖЬ = 0. Подробнее это будет рассмотрено в главе 11. См. также, например, Что такое -- или как превратить ИСТИНА в 1, а ЛОЖЬ в 0?

 

billi

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

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

#1

24.07.2014 16:06:17

Доброго всем времени суток.  Уважаемые гуру нужен небольшой хелп. Задача следущая, сравнить значение ячейки с массивом и если совпадение присутствует, то должно быть истина, если нету , то ложь.  Попробовал ПОИСКПОЗ , вроде то что надо , но она говорит номер строки, а хотелось бы просто истина или ложь.

Методы сравнения таблиц в Microsoft Excel

Сравнение в Microsoft Excel

​Смотрите также​ Range​из категории​Akazotik​ прицеплять файлы? Если​If .Exists(s) Then​Подскажите, пожалуйста, в​ В оранжевых ячейках(они,как​ возник вопрос, адресованный​End Sub​Sub test() Dim​ и позже, а​ значку​Теперь нам нужно создать​ делаем выбор позиции​ клавишу​ колонках табличных массивов.​Довольно часто перед пользователями​Dim y As​Статистические​: Вопрос закрыт. Нашёл​ да, то я​ Cells(.Item(s), 1).Interior.Color =​ чём я ошибаюсь?​ я сейчас вижу,​ больше наверное к​Но в общем​

​ ws As Worksheet,​ также для версий​

​«Вставить функцию»​ подобное выражение и​«Повторяющиеся значения»​

Способы сравнения

​F5​ В нашем случае​ Excel стоит задача​ Range​, которая подсчитывает сколько​ корреляционный анализ, позволяющий​

  • ​ сразу же прицеплю​ vbGreen​
  • ​Hugo​ более отвлекают ,нежели​
  • ​ nilem.Во втором массиве​ тот же перебор,​

​ a, g, f,​ до Excel 2007​.​ для всех других​.​.​ не совпали данные​ сравнения двух таблиц​s1 = 1​ раз каждый элемент​ сравнивать массивы различной​

​ именно файлы, чтоб​Next i​: Почему решили что​ приносят пользы; вобщем,​ сочетания цифр 48-8(они​ но усовершенствованный -​

Способ 1: простая формула

​ aLR&, gLR&, i&,​ с выполнением этого​Открывается​ элементов первой таблицы.​Запускается окно настройки выделения​Активируется небольшое окошко перехода.​ только в одной​ или списков для​ ‘столб со значениями​ из второго списка​ длины.​ не гонять никого.​End With​ не все? Думаю​ вся суть в​ стоят в одном​ сперва загоняем данные​ j&, flag As​ условия нет никаких​Мастер функций​ Для этого выполним​ повторяющихся значений. Если​ Щелкаем по кнопке​ строке. При их​ выявления в них​ которые ищем​ встречался в первом:​

​БМВ​Bema​End Sub​ все, и даже​ зеленой ячейке) изначально​ столбце) не будет,а​ в массивы, потом​ Boolean Set ws​

Сравниваемые таблицы в Microsoft Excel

  1. ​ проблем. Но в​. Переходим в категорию​ копирование, воспользовавшись маркером​ вы все сделали​​«Выделить…»​​ сравнении формула выдала​ отличий или недостающих​s2 = 3​Полученный в результате ноль​: Akazotik, может хоть​​: Можно. Суммарным весом​​Travelstar​ излишне все -​ было 2 массива​ в первом и​ в словари, потом​ = ThisWorkbook.Worksheets(«Лист1») aLR​

    ​ Excel 2007 и​

    Формула сравнения ячеек в Microsoft Excel

    ​«Статистические»​ заполнения, как это​ правильно, то в​в его нижнем​

  2. ​ результат​​ элементов. Каждый юзер​​ ‘столб в котором​ и говорит об​ ссылкой поделитесь, раз​ до 100кб.​: Благодарю!​​ ведь после получения​​ : первая и​ третьем есть,значит комбинаций​

    Результат сранения первой строки двух таблиц в Microsoft Excel

  3. ​ первый словарь сверяем​ = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row​ Excel 2010 для​и производим выбор​ мы уже делали​ данном окне остается​ левом углу.​«ЛОЖЬ»​ справляется с этой​ ищем​ отличиях.​ нашли?​Akazotik​

    ​Такой подход приемлемый,​ результата сравнения продолжаются…​ вторая части столбца​ с цифрами 48-8-х-х-х-х​ с двумя другими.​ gLR = ws.Cells(ws.Rows.Count,​ того, чтобы открыть​​ наименования​​ прежде. Ставим курсор​ только нажать на​После этого, какой бы​. По всем остальным​ задачей по своему,​s3 = 4​И, наконец, «высший пилотаж»​Ігор Гончаренко​: у меня файлики​ слегка изменю структуру​

    Маркер заполнения в Microsoft Excel

  4. ​Вообще со словарём​ «Шифр». Одну из​ быть не должно.Можно​Вариант с признаком​ 7).End(xlUp).Row a =​ оба окна одновременно,​«НАИМЕНЬШИЙ»​ в нижнюю правую​ кнопку​ из двух вышеперечисленных​ строчкам, как видим,​​ но чаще всего​​ ‘столб в который​ — можно вывести​:​ к сожалению больше,​​ программы. С таким​​ было бы быстрее​

    Результат расчета по всему столбцу в Microsoft Excel

  5. ​ них нужно каким-то​ ли в макросе​ столбца:​ ws.Range(ws.[a2], ws.Cells(aLR, 3)).Value​ требуется провести дополнительные​. Щелкаем по кнопке​ часть элемента листа,​«OK»​​ вариантов вы не​​ формула сравнения выдала​

    Переход в Мастер функций в Microsoft Excel

  6. ​ на решение указанного​​ записываем НЕ найденные​​ отличия отдельным списком.​​БМВ​​ но могу запихнуть​​ подходом я могу​​ — ну если​​ образом сравнить с​​ сделать проверку таких​

    Переход в окно аргументов функции СУММПРОИЗВ в Microsoft Excel

  7. ​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Option Explicit​​ g = ws.Range(ws.[g2],​​ манипуляции. Как это​«OK»​ который содержит функцию​. Хотя при желании​ избрали, запускается окно​ показатель​ вопроса тратится довольно​Columns(s3).Clear​

    ​ Для этого придется​

    ​: Ігор Гончаренко, Я​ эти в архив.​ в принципе отказаться​ строк пара тысяч,​ целым столбцом «0»​ условий или же​Sub tt()​ ws.Cells(gLR, 9)).Value ReDim​ сделать рассказывается в​

    ​.​​СЧЁТЕСЛИ​​ в соответствующем поле​ выделения групп ячеек.​«ИСТИНА»​ большое количество времени,​Set x =​ использовать формулу массива:​​ ТС воспитываю :-)​​ Сейчас поправлю​​ от массивов.​​ то не важно…​ , получив при​ лучше это делать​Dim b, c,​ f(1 To gLR​ отдельном уроке.​​Функция​​, и после преобразования​ данного окошка можно​

    ​ Устанавливаем переключатель в​

    ​.​​ так как далеко​​ Range(Cells(1, s1), Cells(Cells(Rows.Count,​

    Окно аргументов функции СУММПРОИЗВ в Microsoft Excel

  8. ​Выглядит страшновато, но свою​ , а не​Ігор Гончаренко​SkyPro​Travelstar​​ этом массив с​​ с помощью функций​ oDict1 As Object,​ — 1, 1​Урок: Как открыть Эксель​НАИМЕНЬШИЙ​ его в маркер​ выбрать другой цвет​ позицию​​Кроме того, существует возможность​​ не все подходы​

Результат расчета функции СУММПРОИЗВ в Microsoft Excel

​ s1).End(xlUp).Row, s1))​ работу выполняет отлично​ ….. :-)​: а как вычисляется​: Можно еще SQL​: Вот и по​ нулей и единиц.​ листа.​ oDict2 As Object,​ To 1) For​ в разных окнах​, окно аргументов которой​ заполнения зажимаем левую​ выделения.​«Выделить по строкам»​ с помощью специальной​ к данной проблеме​With x​

​ ;)​

Сравнение таблиц на разных листах в Microsoft Excel

​он же и​ «мера похожести массивов»​ запросом.​ логике, вроде как​ Именно в сравнении​nilem​ oDict3 As Object​ i = 1​

Способ 2: выделение групп ячеек

​Как видим, существует целый​ было раскрыто, предназначена​ кнопку мыши и​После того, как мы​. Жмем по кнопке​ формулы подсчитать количество​ являются рациональными. В​.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=x​Roody_woody​ успел​можете рассказать на​Использовал класс от​

  1. ​ всё и проверяется…А​ возникла трудность.​​: Искал-искал 48 в​​Dim x​ To UBound(g, 1)​​ ряд возможностей сравнить​​ для вывода указанного​ тянем курсор вниз.​ произведем указанное действие,​​«OK»​​ несовпадений. Для этого​ то же время,​ _​​: Добрый день.​​Андрей VG​

    Переход в окно выделения группы ячеек в Microsoft Excel

    ​ пальцах или на​ Nerv​ строк и действительно​Вижу, что своим​ результирующем массиве (кстати,​Dim kk, ii,​ j = 1:​ таблицы между собой.​ по счету наименьшего​Как видим, программа произвела​ все повторяющиеся элементы​​.​​ выделяем тот элемент​ существует несколько проверенных​, Unique:=True​Стоит следующая задача:​: Михаил, а вы​​ массивах, как вам​​Допустим вы работаете с​

  2. ​ много… по несколько​ описанием внутри файла​​ не сразу сообразил,​​ y&​ flag = False​

    Окно перехода в Microsoft Excel

  3. ​ Какой именно вариант​ значения.​ вычисление совпадений, сравнив​ будут выделены выбранным​Как видим, после этого​ листа, куда оно​ алгоритмов действий, которые​​End With​​ Сравнить ячейки из​​ уверены, что это​​ удобнее.​

    Окно выделения групп ячеек в Microsoft Excel

  4. ​ таблицей созданной сотрудником,​ тысяч в каждом​ все только запутал…)​ что можно воспользоваться​b = [a19:f32]​ Do Until flag​ использовать зависит от​В поле​ каждую ячейку первой​ цветом. Те элементы,​ несовпадающие значения строк​

Несовпавшие данные в Microsoft Excel

Способ 3: условное форматирование

​ будет выводиться. Затем​ позволят сравнить списки​Set y =​ столбца x с​ именно корреляционный анализ?​Akazotik​ который в неупорядоченный​ массиве…​ Описание проблемы в​

  1. ​ «Найти и выделить»​c = [a35:f48]​ Or j >​ того, где именно​«Массив»​ таблицы с данными,​ которые не совпадают,​ будут подсвечены отличающимся​ щелкаем по значку​ или табличные массивы​​ Range(Cells(1, s2), Cells(Cells(Rows.Count,​​ ячейкой из столбца​​ Что-то не припомню,​​: Я пытался сделать​ способ заполняет информацию,​А вот факт​​ шапке темы -​​) — не​Set oDict1 =​​ UBound(a, 1) If​​ расположены табличные данные​

    Переход в окно управления правилами условного форматирования в Microsoft Excel

  2. ​следует указать координаты​ которые расположены во​ останутся окрашенными в​​ оттенком. Кроме того,​​«Вставить функцию»​

    Диспетчер правил условного форматирования в Microsoft Excel

  3. ​ в довольно сжатые​ s2).End(xlUp).Row, s2))​​ y и в​​ чтобы в нём​​ через пропорции: ячейка​​ касающеюся объема продаж​ показывает несколько не​ на то,что в​ нашел.​ CreateObject(«scripting.dictionary»)​​ g(i, 1) =​​ относительно друг друга​ диапазона дополнительного столбца​ втором табличном диапазоне.​ свой изначальный цвет​​ как можно судить​​.​ сроки с минимальной​i = 1​ случае их равенства​ можно было сравнивать​ 1 = 100%,​ по определенным товарам.​ тот результат (очень​​ файле не обращайте​​Надо бы еще​Set oDict2 =​ a(j, 1) Then​ (на одном листе,​«Количество совпадений»​ В четырех случаях​ (по умолчанию белый).​ из содержимого строки​

    ​В окне​

    ​ затратой усилий. Давайте​For Each w​ записать значение ячейки​ выборки с разным​​ ячейка 2 =​​ Одной из ваших​

    Переход в окно выбора формата в Microsoft Excel

  4. ​ жаль, что не​​ внимания.)​​ повторы убрать. У​​ CreateObject(«scripting.dictionary»)​​ If g(i, 2)​ в разных книгах,​, который мы ранее​ результат вышел​ Таким образом, можно​ формул, программа сделает​Мастера функций​​ подробно рассмотрим данные​​ In x.SpecialCells(xlCellTypeVisible)​

    Выбор цвета заливки в окне формат ячеек в Microsoft Excel

  5. ​ из строки, совпадающей​ числом элементов.​ ?%, но кол-во​​ задач будет –​​ могу сейчас вложить​

    Окно создания правила форматирования в Microsoft Excel

  6. ​Формуляр​ Вас Ексель 2007/10?​​Set oDict3 =​​ = a(j, 2)​​ на разных листах),​​ преобразовали с помощью​

    Применение правила в диспетчере правил в Microsoft Excel

  7. ​«1»​ сразу визуально увидеть,​ активной одну из​в группе операторов​ варианты.​If y.Find(w, LookAt:=xlWhole)​

Несовпадающие данные отмечены с помощью условного форматирования в Microsoft Excel

​ с ячейкой из​Видимо — это​ ячеек не совпадает,​ сравнение. Следует проверить​ программку…).​: Нули и единички​MCH​ CreateObject(«scripting.dictionary»)​ Then If Abs(a(j,​ а также от​ функции​, а в двух​ в чем отличие​ ячеек, находящуюся в​«Математические»​Скачать последнюю версию​

  1. ​ Is Nothing Then​ столбца y из​

    Выделение сравниваемых таблиц в Microsoft Excel

  2. ​ открытие!​ и +имеются пустые​​ содержит ли столбец​​В массивы я​ вывести вообще не​​: megavlom, у Вас​​For Each x​ 3) / g(i,​​ того, как именно​​ЕСЛИ​ случаях –​​ между массивами.​​ указанных не совпавших​

    Переход к условному форматированию в Microsoft Excel

  3. ​выделяем наименование​ Excel​Cells(i, s3) =​ столбца z. Я​Учитывая первую ссылку,​ ячейки. Так что​ таблицы конкретное значение​​ вгоняю диапазон из​​ проблема. Дальше-то с​ в качестве примера​ In [a3:f16]​ 3) — 1)​ пользователь желает, чтобы​

    Окно настройки выделения повторяющихся значений в Microsoft Excel

  4. ​. Делаем все ссылки​«0»​При желании можно, наоборот,​ строках.​СУММПРОИЗВ​Читайте также: Сравнение двух​ w​ так себе представляю​ то скорее всего​ я даже в​ или нет. Конечно​ разных книг, первый​ ними чего?​

Повторяющиеся значения выделены в Microsoft Excel

​ указаны числа 37,​If Len(x.Value) Then​ < 0.03 Then​ это сравнение выводилось​ абсолютными.​. То есть, программа​ окрасить несовпадающие элементы,​Произвести сравнение можно, применив​. Щелкаем по кнопке​ документов в MS​i = i + 1​ это, но не​​ потребуется модифицированный алгоритм​​ замешательстве. если есть​​ можно воспользоваться инструментом:​​ столбец — данные​lom55​​ 31, 44, 72,​​ oDict1.Item(x.Value & «|»​

Настройка выделения уникальных значений в Microsoft Excel

​ flag = True​ на экран.​В поле​

Уникальные значения выделены в Microsoft Excel

​ не смогла отыскать​ а те показатели,​

Способ 4: комплексная формула

​ метод условного форматирования.​«OK»​ Word​End If​​ владею достаточными знаниями.​​ LCS, благо его​ возможность реализовать данный​ «ГЛАВНАЯ»-«Редактирование»-«Найти» (комбинация горячих​ типа String, второй​: Совсем не тот​ 8, 11​ & x.Column) =​

​ End If End​​Автор: Максим Тютюшев​​«K»​ во второй таблице​ которые совпадают, оставить​ Как и в​.​Существует довольно много способов​Next​Для понимания: у​

​ как раз можно​

​ метод для массивов​​ клавиш CTRL+F). Однако​​ — Date и​ компот.)​При этом числа​ x.Value​

​ If j =​​Фдуч1985​​указывается, какое по​ два значения, которые​ с заливкой прежним​ предыдущем способе, сравниваемые​Активируется окно аргументов функции​ сравнения табличных областей​

  1. ​Me.ShowAllData​ меня есть 2​ на формулах реализовать.​ разной длины, то​ при регулярной необходимости​​ при проверке, если​​Вот собственно формула,если​

    Переход в Мастер функций в программе Microsoft Excel

  2. ​ 72 и 44​​Next​​ j + 1​​: Всем добрый вечер!​​ счету наименьшее значение​ имеются в первом​​ цветом. При этом​​ области должны находиться​СУММПРОИЗВ​​ в Excel, но​​Beep​

    Переход в окно аргументов функции СЧЁТЕСЛИ в Microsoft Excel

  3. ​ прайса с артикулами,​Типовая задача, возникающая периодически​​ я буду рад​​ выполнения поиска по​ совпали String-и, то​ все на кучу​ встречаются в 3​

    ​For Each x​​ Loop If Not​​очень нужна Ваша​ нужно вывести. Тут​ табличном массиве.​ алгоритм действий практически​ на одном рабочем​, главной задачей которой​ все их можно​End Sub​ названиями и ценами​ перед каждым пользователем​Исправлено​ таблице данный способ​ проверяю даты, так​ слепить:​ массиве в одном​​ In b​​ flag Then f(i,​

    ​ помощь. Есть два​ указываем координаты первой​Конечно, данное выражение для​ тот же, но​

    ​ листе Excel и​​ является вычисление суммы​​ разделить на три​Guest​ двух дилеров с​ Excel — сравнить​Ігор Гончаренко​ оказывается весьма неудобным.​ вот, при проверке​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММ( (СМЕЩ($J$7;;;ПОИСКПОЗ($I$5;$L$7:$L$15;-1)-1)=СМЕЩ($A$3;;;СЧЁТЗ($A$3:$A$15)) )*СМЕЩ($C$3;;;СЧЁТЗ($C$3:$C$15)) )​ столбце. это ошибка?​If Len(x) Then​​ 1) = 1​​ массива (пример приложил,​

    Окно аргументов функции СЧЁТЕСЛИ в Microsoft Excel

  4. ​ ячейки столбца с​ того, чтобы сравнить​ в окне настройки​​ быть синхронизированными между​​ произведений выделенного диапазона.​ большие группы:​: Я не силён​​ одинаковыми, но перепутанными​​ между собой два​: в колонку А​ Кроме этого данный​ работы алгоритма видно,​

    Результат вычислений функции СЧЁТЕСЛИ в Microsoft Excel

  5. ​То есть, все​Интересно, какая конечная​ oDict2.Item(x) = x​ Next ws.Range(ws.[f2], ws.Cells(gLR,​ размерность у них​ нумерацией, который мы​ табличные показатели, можно​ выделения повторяющихся значений​ собой.​ Но данную функцию​сравнение списков, находящихся на​ в в программировании,​​ артикулами. Необходимо найти​​ диапазона с данными​ пишите 1 массив,​ инструмент не позволяет​ что не все​ действо должно происходить​

    Маркер заполнения в программе Microsoft Excel

  6. ​ задача с этими​Next​ 6)).Value = f​ условная, на самом​ недавно добавили. Адрес​ применять и в​ в первом поле​Прежде всего, выбираем, какую​​ можно использовать и​​ одном листе;​ а можно с​​ совпадения по артикулам​​ и найти различия​ в колонку В​ выполнять вычисления с​ значения, хоть они​ в одной ячейке.)​ числами, что в​

Результат расчета столбца функцией СЧЁТЕСЛИ в Microsoft Excel

​For Each x​ End Subкак проверите​ деле 10 тыс.​ оставляем относительным. Щелкаем​ существующем виде, но​ вместо параметра​ табличную область будем​

​ для наших целей.​сравнение таблиц, расположенных на​ помощью формулы или​ и записать в​ между ними. Способ​ — 2-й (размерности​

  1. ​ найденным результатом. Каждому​ и равны, совпадают…​​ПОИСКПОЗ ищет во​​ итоге хотите получить?​ In c​ — пожалуйста, сообщите​​ и более записей​​ по кнопке​ есть возможность его​«Повторяющиеся»​​ считать основной, а​​ Синтаксис у неё​ разных листах;​ как ваш код​​ соседнюю ячейку значение​​ решения, в данном​ могут не совпадать)​ пользователю следует научиться​Возможно ли такая​ второй таблице номер​megavlom​​If Len(x) Then​​ о результатах и,​ в каждом), если​​«OK»​​ усовершенствовать.​

    Переход в окно аргументов функции ЕСЛИ в Microsoft Excel

  2. ​следует выбрать параметр​​ в какой искать​​ довольно простой:​сравнение табличных диапазонов в​ применить мне????​​ цены и названия​​ случае, определяется типом​ в ячейке Д2​ автоматически решать задачи​ ситуация, что в​ строки вхождения значения​: Добрый день.Как бы​​ oDict3.Item(x) = x​​ если не трудно​

    ​ их сравнить, в​.​​Сделаем так, чтобы те​​«Уникальные»​ отличия. Последнее давайте​=СУММПРОИЗВ(массив1;массив2;…)​​ разных файлах.​​k61​​ детали. Что бы​​ исходных данных.​ можете наблюдать как​ в Excel.​ одном из массивов​ ,введенного в желтую​ четче обьяснить.Задумка была​Next​ — насколько медленнее​ предыдущем массиве (в​​Оператор выводит результат –​​ значения, которые имеются​

    ​. После этого нажать​

    ​ будем делать во​​Всего в качестве аргументов​​Именно исходя из этой​​: Мне пришло грозное​​ проверить действительно ли​Если списки синхронизированы (отсортированы),​ вычисляется процент схожести​Чтобы автоматизировать данный процесс​ в значениях типа​ ячейку(ближайшего меньшего) -​ такая -сделать перебор​​kk = oDict1.keys​​ работает этот макрос​ январе) произошли изменения​ число​​ во второй таблице,​​ на кнопку​

    Окно аргументов функции ЕСЛИ в Microsoft Excel

  3. ​ второй таблице. Поэтому​ можно использовать адреса​​ классификации, прежде всего,​​ письмо из органов​ это одинаковые детали​ то все делается​​ массивов по мере​​ стоит воспользоваться формулой​ String присутствуют буквы​ назвем этот номер​

    Значение ЛОЖЬ формулы ЕСЛИ в Microsoft Excel

  4. ​ чисел столбцов каждого​ii = oDict1.items​ по сравнению с​​ (по данным последующего​​3​ но отсутствуют в​«OK»​ выделяем список работников,​ до 255 массивов.​ подбираются методы сравнения,​ о необходимости перехода​

    Номера строк в Microsoft Excel

  5. ​ и насколько отличаются​ весьма несложно, т.к.​ внесения данных в​ с использованием функций​​ не EN, а​​ Х. Потом массив​ массива получится набор​y = -1​ предыдущим на реальном​ массива один из​. Именно оно наименьшее​ первой, выводились отдельным​

    Нумерация строк в Microsoft Excel

  6. ​.​ находящийся в ней.​ Но в нашем​ а также определяются​ на лицензионное ПО.​​ цены.​​ надо, по сути,​

    Вставить функцию в Microsoft Excel

  7. ​ них и все​​ =ИЛИ() и =СОВПАД().​​ RUS? /​​ из Х-1 елементов​​ комбинаций.после эти три​For Each x​​ объеме данных.​​ объектов исчез, он​​ из нумерации несовпадающих​​ списком.​

    Переход в окно аргументов функции НАИМЕНЬШИЙ в Microsoft Excel

  8. ​Таким образом, будут выделены​​ Переместившись на вкладку​​ случае мы будем​ конкретные действия и​Думаю придётся переходить​Буду очень благодарен​ сравнить значения в​

    ​ строго по Вашему​​Чтобы легко проверить наличие​​nilem​ нужно сравнить с​​ набора сравнить между​​ In ii​Фдуч1985​ отмечен желтым цветом​​ строк табличных массивов.​​Прежде всего, немного переработаем​ именно те показатели,​

    ​«Главная»​​ использовать всего два​​ алгоритмы для выполнения​ на лицензионный Excel,​ за помощь.​ соседних ячейках каждой​ алгоритму​ товаров в таблице​: Редко, но бывает.​ массивом столбца «0»,состоящим​ собой и совпадающие​​y = y + 1​​: Спасибо большое! Очень​

    Окно аргументов функции НАИМЕНЬШИЙ в Microsoft Excel

  9. ​ и обозначен «1»).​ С помощью маркера​​ нашу формулу​​ которые не совпадают.​, щелкаем по кнопке​ массива, к тому​ задачи. Например, при​ освежив версию до​Roody_woody​

    Результат расчета функции НАИМЕНЬШИЙ в Microsoft Excel

  10. ​ строки. Как самый​Akazotik​ делаем следующее:​Если сравниваете строки,​ из Y элементов,​ комбинации(по 6 цифр)и​​If oDict2.exists(x) Then​​ хорошо работает, разница​Возможно сделать макрос​​ заполнения копируем формулу​​СЧЁТЕСЛИ​Урок: Условное форматирование в​«Условное форматирование»​​ же, как один​​ проведении сравнения в​​ 2010. :(​​: Маленький кусочек файла​ простой вариант -​: То ли я​В ячейку B1 вводим​​ то добавьте Трим​​ получив при этом​ есть искомый вариант.За​​If oDict3.exists(x) Then​​ во времени несущественная,​ для автоматизации этого​​ до самого низа.​​, а именно сделаем​

    Переход в окно аргументов функции ИНДЕКС в Microsoft Excel

  11. ​ Экселе​, которая имеет месторасположение​ аргумент.​ разных книгах требуется​А пока файл​​ скину.​​ используем формулу для​ тупой, то ли​ названия товара например​ (лишние пробелы бываю​ массив из Y​ счет разного расположения​Debug.Print kk(y)​ на 19 тыс.​​ процесса? Чтобы «ушедшие»​​Теперь, зная номера строк​

    Окошко выбора вида функции ИНДЕКС в Microsoft Excel

  12. ​ её одним из​​Также сравнить данные можно​​ на ленте в​Ставим курсор в поле​ одновременно открыть два​ в формате xls​Надо сравнить столбец​

    ​ сравнения значений, выдающую​​ файлик не работает,​​ – Монитор.​ намного чаще), типа​​ элементов типа {0;1;1;0;0;0;0},​​ чисел в столбцах​End If​ записей в первом​ объекты как-то выделялись,​ несовпадающих элементов, мы​ аргументов оператора​ при помощи сложной​ блоке​«Массив1»​ файла Excel.​ приложите…​ А со столбцом​ на выходе логические​​ ибо в ячейке​​В ячейке B2 вводим​​ такого​​ который в свою​

    ​ происходит разный набор​​End If​​ случае это занимает​ к примеру, единицами?​ можем вставить в​ЕСЛИ​ формулы, основой которой​«Стили»​и выделяем на​Кроме того, следует сказать,​

    ​clever2012​​ B на наличие​​ значения​

    Окно аргументов функции ИНДЕКС в Microsoft Excel

  13. ​ Д2 находится функция​ следующую формулу:​200?’200px’:»+(this.scrollHeight+5)+’px’);»>If Trim(arr1(i, 1)) =​ очередь без проблем​ вариантов.То что есть​Next​ 10 сек, во​ Опираться при сравнении​ ячейку и их​. Для этого выделяем​ является функция​

Фамилии выведены с помощью функции ИНДЕКС в Microsoft Excel

Способ 5: сравнение массивов в разных книгах

​. Из выпадающего списка​ листе сравниваемый диапазон​ что сравнивать табличные​: прикрепляю​ одинаковых значений и​ИСТИНА (TRUE)​ счисл(), которая выдаёт​Обязательно после ввода формулы​ Trim(arr2(k, 2)) Then​ умножается на массив​ повторы чисел в​End Sub​ втором случае около​ на цены и​ значения с помощью​ первую ячейку, в​СЧЁТЕСЛИ​ переходим по пункту​ данных в первой​ области имеет смысл​k61​ если есть совпадение,​или​ рандомное число​ для подтверждения нажмите​и еще ,​ столбца «2», после​ разных столбцах массива​

Сравнение таблиц в двух книгах в Microsoft Excel

​Serge_007​ минуты.​

​ бюджеты объектов нельзя,​ функции​ которой расположен оператор​. С помощью данного​«Управление правилами»​ области. После этого​ только тогда, когда​: Проверяем.​ то записать в​ЛОЖЬ (FALSE)​БМВ​ комбинацию горячих клавиш​ чтобы вести сравнение​ чего вычисляется сумма.​ -так должно быть.Excel​: Объясните как у​

​Vega-NGC​

lumpics.ru

Сравнение двух массивов в excel

​ т.к. их колебания​​ИНДЕКС​
​СЧЁТЕСЛИ​ инструмента можно произвести​.​ в поле ставим​ они имеют похожую​Число сообщений -​ столбец G и​:​: Ігор Гончаренко, Ну​ CTRL+SHIFT+Enter. Ведь данная​ без учета регистра,​lom55​ 2003,но могу поставить​ Вас получился такой​: Доброго всем времени!​ условно составляют +-5%.​
​. Выделяем первый элемент​. В строке формул​ подсчет того, сколько​Активируется окошко диспетчера правил.​ знак​ структуру.​ 1111 !!!!!!!​ H значение совпадающего​Число несовпадений можно посчитать​ так то наверно​ формула должна выполняться​ в самомо верху​:​

​ 2007 не столь​​ список:​Поделитесь пожалуйста макросом,​ Если конечно это​
​ листа, содержащий формулу​
​ перед ней дописываем​ каждый элемент из​ Жмем в нем​

​«не равно»​​Самый простой способ сравнения​До конца недели​ названия из стоолбца​

​ формулой:​​ уже перебор.​
​ в массиве. Если​ модуля​Serge_007​ существенно.Числа,которых нет сразу​37 31 44 72​ который будет при​ никак нельзя заложить​НАИМЕНЬШИЙ​ выражение​ выбранного столбца второй​ на кнопку​(​ данных в двух​ буду Не поститься,​ К и цены​=СУММПРОИЗВ(—(A2:A20<>B2:B20))​Akazotik, Ваш вопрос​ все сделано правильно​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Option Compare Text​, правила читал; считал​ в трех массивах​ 8 11​ своём запуске выдавать​ в код…​. После этого переходим​«ЕСЛИ»​ таблицы повторяется в​«Создать правило»​<>​ таблицах – это​ дабы не испортить​ из столбца М​или в английском варианте​ больше к алгоритму​ в строке формул​Hugo​ свои обьяснения, по​

​ будут отсеяны до​​?​ окно например: (Выберите​ikki​ в строку формул​без кавычек и​ первой.​

​.​​) и выделяем сравниваемый​ использование простой формулы​ :)​
​ на одинаковые позиции​​ =SUMPRODUCT(—(A2:A20<>B2:B20))​​ , методике, а​
​ вы найдете фигурные​: Да и даты​ крайней мере последнее,​ вывода в массивы.Если​
​megavlom​ первый файл для​: а что гарантирует​

​ и перед наименованием​​ открываем скобку. Далее,​Оператор​

​В запустившемся окне производим​​ диапазон второй области.​ равенства. Если данные​
​Hugo​
​ в ячейку рядом​Если в результате получаем​ не к тому​ скобки.​ там может в​ внятными.)​ в столбце стоят​: Это для примера-совпадение​ сравнения), потом следующее,​ уникальность записи в​«НАИМЕНЬШИЙ»​
​ чтобы нам легче​СЧЁТЕСЛИ​ выбор позиции​ Далее обворачиваем полученное​ совпадают, то она​
​: Option Explicit​

​ с совпадением.​​ ноль — списки​

​ как это воплотить​​В результате формула будет​
​ секундах отличаются…​Я пытался наоборот​ числа-например 48,8,3,1 ,а​ в трех массивах​ (Выберите второй файл​ таблицах?​дописываем название​ было работать, выделяем​относится к статистической​«Использовать формулу»​ выражение скобками, перед​ выдает показатель ИСТИНА,​’Макросом -​akobir​ идентичны. В противном​ в Excel.​ возвращать логическое значение​Покажите файл -​ обощить, но если​ в других столбцах​ комбинации из 6​ для сравнения). Принцип​первые три столбца?​«ИНДЕКС»​ в строке формул​ группе функций. Его​. В поле​ которыми ставим два​ а если нет,​’1.два диапазона в​:​ случае — в​Akazotik​ ИСТИНА или ЛОЖЬ.​ можно неоригинальный​ нужна конкретика…Обновил файл,вобщем.)​ таких чисел нет,то​ цифр​ работы макроса: сравнить​пс. у Вас​без кавычек, тут​ значение​ задачей является подсчет​«Форматировать ячейки»​ знака​ то – ЛОЖЬ.​ два массива​Roody_woody​ них есть различия.​

​: Желательно воплотить это​​ В зависимости от​Ещё раз столкнулся​Serge_007​ и комбинаций 48-8,48-3,48-1,8-3,8-1,3-1​Hugo​ два массива на​ там на Пречистенке​ же открываем скобку​«ЕСЛИ»​

​ количества ячеек, значения​​записываем формулу, содержащую​
​«-»​ Сравнивать можно, как​’2.создание массива для​, в столбцах А​ Формулу надо вводить​ в экселе, ибо​ того содержит ли​ — два числа​: 1. Вместо #ЗНАЧ!​ таких не будет.За​: Не понятно, кто​ идентичность, с выводом​ чудеса какие-то​ и ставим точку​и жмем по​ в которых удовлетворяют​ адреса первых ячеек​. В нашем случае​ числовые данные, так​ результатов​
​ и В абсолютно​ как формулу массива,​ от программирования я​
​ таблица исходное значение​ совершенно одинаковые всюду​

CyberForum.ru

Сравнение массивов (сравнение макросом)

​ что должно получиться​​ счет этого происходит​ формирует эти комбинации.​ информационного сообщения о​Фдуч1985​ с запятой (​ иконке​ заданному условию. Синтаксис​ диапазонов сравниваемых столбцов,​ получилось такое выражение:​ и текстовые. Недостаток​

​’3.один перебор n​​ различные данные.​
​ т.е. после ввода​ довольно далёк​ или нет.​ глазом (и в​ в М5 при​ отсев.​Если вручную, то​ проделанной работе -​: Условно да, первые​;​​«Вставить функцию»​​ данного оператора имеет​

​ разделенные знаком «не​​—(A2:A7<>D2:D7)​ данного способа состоит​ значений массива в​

​Roody_woody​​ формулы в ячейку​БМВ​​ Locals тоже) кодом​ К5 равным 97?​megavlom​ я сгенерил список​ то есть: Результат​
​ три. Там и​
​). Затем выделяем в​
​.​ такой вид:​ равно» (​Щелкаем по кнопке​ в том, что​
​ словарь​
​: Простите, ошибся. сравнить​
​ жать не на​
​: Так дайте методику,​
​Разбор принципа действия формулы​ не равны. Но​
​2. И почему?​: Увжаемый nilem ,чтобы​
​ всех цифр с​ сравнения - Проверено​
​ не такое бывает))​ строке формул наименование​
​Открывается окно аргументов функции​=СЧЁТЕСЛИ(диапазон;критерий)​
​<>​
​«OK»​ ним можно пользоваться​
​'4.m проверок массива​ A c J​
​Enter​
​ тут помогут воплотить.​ для сравнения двух​
​ если оба перевести​lom55​
​ доступнее обьяснить -​
​ колонками - выбирайте.​ листов 8, Найдено​
​ikki​
​«ИНДЕКС»​
​ЕСЛИ​
​Аргумент​
​). Только перед данным​
​.​
​ только в том​

​ на наличие в​YouGreed​, а на​ Просто по ссылке​ столбцов разных таблиц:​ в string -​: 1) 36.​ запустите макрос и​
​Удобнее вероятно так​ различий 0, (если​
​: как-то так​
​и кликаем по​
​. Как видим, первое​«Диапазон»​ выражением на этот​Оператор производит расчет и​
​ случае, если данные​
​ словаре и заполнение​: Roody_woody, Попробуйте табличку.​
​Ctrl+Shift+Enter​
​ размерность массивов одинаковая,​
​Функция =СОВПАД() сравнивает (с​ то ОК.​
​2) 97 попадает​ скопируйте набор комбинаций,который​
​ — эту строку​ есть различия, производится​
​Sub test() Dim​ пиктограмме​
​ поле окна уже​представляет собой адрес​ раз будет стоять​ выводит результат. Как​
​ в таблице упорядочены​
​ данными массива результата​ Если правильно понял.​
​.​ а вы указываете,​
​ учетом верхнего регистра),​
​Travelstar​ в слой «ИГЭ-5″​
​ он высветит,после поменяйте​ в втором варианте​
​ заливка ячеек жёлтым​
​ ws As Worksheet,​
​«Вставить функцию»​
​ заполнено значением оператора​
​ массива, в котором​ знак​
​ видим, в нашем​
​ или отсортированы одинаково,​
​’5.выгрузка результатов (тут​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИОШИБКА(ВПР(ЗАМЕНИТЬ($A1;1;2;82);$J$1:$M$15;СТОЛБЕЦ(B1););»»)​
​Если с отличающимися ячейками​
​ что у вас​
​ являются ли два​
​: Спасибо за подсказки,​

​ — номер 3​​ местами массивы1 и2​ напишите так:​ цветом или красным)…​
​ a, g, f,​.​​СЧЁТЕСЛИ​

​ производится подсчет совпадающих​​«=»​ случае результат равен​ синхронизированы и имеют​ нет предварительной очистки​

​akobir​​ надо что сделать,​ разная. Вот еще​
​ значения идентичными или​ но не помогло…​ во второй таблице.​ и опять запустите​
​If Len(x.Value) Then​Если есть что​ dict As Object,​После этого открывается небольшое​
​. Но нам нужно​ значений.​. Кроме того, ко​ числу​
​ равное количество строчек.​ диапазона)​
​:​ то подойдет другой​ вариант, и тоже​
​ нет. Если да,​
​Вот несколько файлов​
​ Он в расчет​
​ макрос.Сравните результаты первого​
​ oDict1.Item(x.Column & «|»​
​ то подобное, помогите​
​ aLR&, gLR&, i&​
​ окошко, в котором​
​ дописать кое-что ещё​
​Аргумент​
​ всем к координатам​
​«1»​
​ Давайте посмотрим, как​
​Sub compare()​
​Roody_woody​
​ быстрый способ: выделите​
​ равный размер​
​ возвращается логическое значение​
​- Checking_Test.xlsm -​
​ не берется.Над ним​
​ и второго массивов​
​ & x.Value) =​
​ пожалуйста найти.​
​ On Error Resume​
​ нужно определить, ссылочный​
​ в это поле.​
​«Критерий»​
​ столбцов в данной​
​, то есть, это​
​ использовать данный способ​

​Dim a(), b(),​​, У вас в​ оба столбца и​Akazotik​ ИСТИНА. Учитывая тот​ программа​ в этой же​

​ ,они будут отличаться,а​​ x.Value​
​Спасибо за Ваше​ Next Set ws​ вид должна иметь​
​ Устанавливаем туда курсор​задает условие совпадения.​ формуле нужно применить​ означает, что в​ на практике на​

​ c(), i As​​ столбце J числа​ нажмите клавишу​: У меня разное​ факт что формула​- Проверяемый файл.xls​smile​ таблице находятся 2​
​ по идее должны​тогда список будет​ внимание и помощь!​ = ThisWorkbook.Worksheets(«Г‹ГЁГ±ГІ1») aLR​

​ функция​​ и к уже​ В нашем случае​ абсолютную адресацию. Для​

​ сравниваемых списках было​​ примере двух таблиц,​ Long, ii As​ сохранены как текст.​F5​ количество ячеек, в​ выполняется в массиве​ — то, что​ слоя : «ИГЭ-2″​ быть идентичны.​

​ с колонкой впереди.​​megavlom​ = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row​ИНДЕКС​ существующему выражению дописываем​ он будет представлять​ этого выделяем формулу​ найдено одно несовпадение.​ размещенных на одном​ Long​ Для начала нужно​, затем в открывшемся​ одном случае 192,​ функция СОВПАД сравнивает​ будет когда-то проверяться​ и «ИГЭ-3» с​nilem​Если выгрузить на​

​: Добрый вечер.Есть три​​ gLR = ws.Cells(ws.Rows.Count,​или предназначенный для​«=0»​ собой координаты конкретных​ курсором и трижды​smile​ Если бы списки​ листе.​
​’1.​ их преобразовать в​ окне кнопку​

​ в другом 283,​​ значение в ячейке​ // пока пустой​ весом 17 и​: По всякому менял​ лист и отсортировать,​
​ массива с числами.Необходимо​ 7).End(xlUp).Row a =​ работы с массивами.​без кавычек.​ ячеек первой табличной​
​ жмем на клавишу​ были полностью идентичными,​Итак, имеем две простые​a = [d3].CurrentRegion.Value​

​ число. Я просто​​Выделить (Special)​ + имеются пустые.​ B1 с каждым​- Отчёт PCN.xls​ 19 соответственно.​ — одно и​ то получите​ сравнить данные в​ ws.Range(ws.[a2], ws.Cells(aLR, 3)).Value​ Нам нужен второй​После этого переходим к​ области.​F4​ то результат бы​ таблицы со списками​b = [f3].CurrentRegion.Value​ выделил, нажал на​-​ Количество элементов в​ значением во всех​ — файл с​AlexM​ то же. Только​1|0​ них и при​ g = ws.Range(ws.[g2],​ вариант. Он установлен​ полю​Выделяем первый элемент дополнительного​. Как видим, около​ был равен числу​

​ работников предприятия и​​’2.​ восклицательный знак и​Отличия по строкам (Row​ массивах не совпадает,​ ячейках диапазона A5:A10.​ которым мне необходимо​: Вариант с формулой​ надо учесть, что​1|27​ совпадении выделить в​ ws.Cells(gLR, 9)).Value ReDim​ по умолчанию, так​

​«Значение если истина»​​ столбца, в котором​ всех адресов столбцов​«0»​ их окладами. Нужно​ReDim c(1 To​ далее — преобразовать​ differences)​ значит и размер​ А благодаря функции​ сравнивать​ массива​ если меняем местами​
​1|37​ список.Если по отдельности​ f(1 To gLR​ что в данном​
​. Тут мы воспользуемся​

​ будет производиться подсчет​​ появился знак доллара,​.​

​ сравнить списки сотрудников​​ UBound(a), 1 To​ в число.​. В последних версиях​ их не может​ =ИЛИ() формула возвращает​- Отчёт Sat.xls​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММ((A$3:A$15=ТРАНСП(ЕСЛИ(H$7:H$15​ верхние таблички, то​1|46​ перебором каждый,это понятно,а​

excelworld.ru

Сравнение двух одномерных массивов с разным числом элементов

​ — 1, 1​​ окошке просто щелкаем​
​ ещё одной вложенной​ количества совпадений. Далее​ что и означает​Таким же образом можно​ и выявить несоответствия​ 1)​Одно значение изменил​
​ Excel 2007/2010 можно​ быть одинаковым.​ по отдельности результат​ — файл, который​Serge_007​ и нижние нужно​1|5​ вот в массиве​ To 1) Set​ по кнопке​ функцией –​ щелкаем по пиктограмме​ превращение ссылок в​ производить сравнение данных​ между столбцами, в​With CreateObject(«Scripting.Dictionary»)​ для проверки.​ также воспользоваться кнопкой​Akazotik​ вычислений функции =СОВПАД().​ необходимо сравнить с​
​: Алекс, а зачем​ поменять соответственно. Визуально​

​2|0​​ пока понимаю не​ dict = CreateObject(«Scripting.Dictionary»)​«OK»​СТРОКА​«Вставить функцию»​

​ абсолютные. Для нашего​​ в таблицах, которые​
​ которых размещены фамилии.​’3.​Смотрите файл.​Найти и выделить (Find​: ЦитатаБМВ написал:​ Если не использовать​ Отчёт PCN​ ты долларов наставил?​ — картинки УФ​2|31​ до конца.​ For i =​.​. Вписываем слово​.​ конкретного случая формула​ расположены на разных​Для этого нам понадобится​For i =​Roody_woody​ & Select) -​Так дайте методику,​ функцию ИЛИ, тогда​
​Алгоритм пока пишется,​ Формула ведь в​ должны совпадать в​2|8​kim​ 1 To UBound(a,​Запускается окно аргументов функции​«СТРОКА»​

​Происходит запуск​​ примет следующий вид:​ листах. Но в​ дополнительный столбец на​ 1 To UBound(b)​

​: Решение найдено.​​ Выделение группы ячеек​ тут помогут воплотить.​
​ формула будет возвращать​ это наработки.​ одной ячейке будет​​ каждой паре верхних​​3|0​: Добрый вечер!​ 1) dict.Add a(i,​
​ИНДЕКС​без кавычек, далее​Мастера функций​=$A2<>$D2​ этом случае желательно,​ листе. Вписываем туда​.Item(b(i, 1)) =​В G1 и​ (Go to Special)​ Собственно вот так​ только результат первого​Если будут у​Ещё вариант:​ и нижних табличек.​3|1​Вы не первый​ 1) & «|»​. Данный оператор предназначен​ открываем скобки и​

​. Переходим в категорию​​Данное выражение мы и​​ чтобы строки в​​ знак​ 0&​ H1 соответственно:​на вкладке​
​ можно реализовать?​ сравнения.​ кого-нибудь интересные замечания​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММ((A3:A15=ТРАНСП(ЕСЛИ(ПОИСКПОЗ(;K5-K7:K15)>СТРОКА(1:10);I7:I15)))*B3:B15)​​Теперь результат пишем​3|15​ день на форуме​ & a(i, 2)​
​ для вывода значения,​

​ указываем координаты первой​​«Статистические»​
​ записываем в вышеуказанное​ них были пронумерованы.​«=»​Next​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИОШИБКА(ВПР($A1;$J:$M;4;0);ЕСЛИОШИБКА(ВПР($A1&»»;$J:$M;4;0);»—«))​Главная (Home)​АlехМ​Вот как можно применять​ буду признателен.​lom55​ в строку через​3|17​

​ и должны прекрасно​​ & «|» &​ которое расположено в​
​ ячейки с фамилией​

​. Находим в перечне​​ поле. После этого​ В остальном процедура​. Затем кликаем по​'4.​
​Код200?'200px':''+(this.scrollHeight+5)+'px');">=ЕСЛИОШИБКА(ВПР($A1;$J:$K;2;0);ЕСЛИОШИБКА(ВПР($A1&"";$J:$K;2;0);"--"))​​Excel выделит ячейки, отличающиеся​

​: Akazotik, а файл​​ сразу несколько таких​Travelstar​
​: Точно! Транспонировать же​ символ «|» -​3|5​

​ знать, что прикрепленный​​ a(i, 3), «»​ определенном массиве в​ во второй таблице,​ наименование​
​ щёлкаем по кнопке​ сравнения практически точно​
​ первому наименованию, которое​

excelworld.ru

Сравнение двумерных массивов (Макросы/Sub)

​For i =​​и протянуть вниз​
​ содержанием (по строкам).​ вы тут до​ формул на практике​: и ещё 2​
​ надо.)​
​ так, вроде, проще.​3|72​ файл-пример значительно ускорит​
​ Next For i​ указанной строке.​ после чего закрываем​«СЧЁТЕСЛИ»​«Формат…»​
​ такая, как была​
​ нужно сравнить в​ 1 To UBound(a)​
​ до конца таб.​ Затем их можно​
​ сих не выложили.​ при сравнении двух​
​ файла​Спасибо большое Вам​
​Проверьте.​3|8​ решение. Или Вам​ = 1 To​Как видим, поле​ скобки. Конкретно в​. После его выделения​
​.​ описана выше, кроме​ первом списке. Опять​If Not .exists(a(i,​Во вложении результат.​ обработать, например:​ Зато есть кросс​
​ столбцов в разных​PS: функция называется​ и всем,кто пытался​megavlom​
​3|9​
​ быстро не нужно?​
​ UBound(g, 1) If​
​«Номер строки»​
​ нашем случае в​

​ щелкаем по кнопке​Активируется окно​
​ того факта, что​ ставим символ​

​ 1)) Then ii​​Всем большое спасибо​залить цветом или как-то​ на другом форуме​ таблицах одновременно:​ Compare(arr1 as Variant,​ помочь.​
​: За внимание спасибо,проверить​4|0​ К тому же​ Not dict.exists(g(i, 1)​уже заполнено значениями​

​ поле​​«OK»​«Формат ячеек»​ при внесении формулы​«=»​ = ii +​ за помощь!​ еще визуально отформатировать​
​Akazotik​Достаточно ввести массив формул​ arr2 as Variant))​AlexM​ смогу только завтра.​4|1​
​ это является нарушением​ & «|» &​ функции​«Значение если истина»​.​. Идем во вкладку​ придется переключаться между​с клавиатуры. Далее​ 1: c(ii, 1)​Формулы нужно оформлять​очистить клавишей​: АlехМ,я не могу​ в одну ячейку​Hugo​
​: Когда файл отправил​megavlom​4|11​ 3 пункта​ g(i, 2) &​НАИМЕНЬШИЙ​получилось следующее выражение:​

​Происходит запуск окна аргументов​​«Заливка»​
​ листами. В нашем​ кликаем по первой​ = a(i, 1)​ тегами (кнопка fx)!​Delete​
​ выложить файл, т.к.​ (E2), потом скопировать​
​: Не, я отказываюсь​ понял что $​: Здравствуйте.Уважаемый nilem первое​4|15​правил форума​
​ «|» & g(i,​

​. От уже существующего​​СТРОКА(D2)​ оператора​. Тут в перечне​
​ случае выражение будет​ ячейке колонки, которую​:)
​Next​clever2012​заполнить сразу все одинаковым​ он больше 100кб​ его во все​ разбираться…​ лишние. Решил не​ решение более удачное..,при​4|46​

​…​​ 3)) Then f(i,​ там значения следует​
​Теперь оператор​
​СЧЁТЕСЛИ​ цветов останавливаем выбор​
​ иметь следующий вид:​ мы сравниваем, во​End With​: Здравствуйте! Поискал на​
​ значением, введя его​Ігор Гончаренко​ остальные ячейки диапазона​Всё так непрозрачно,​
​ исправлять.​ перемене местами массивов​5|0​megavlom​
​ 1) = 1​ отнять разность между​
​СТРОКА​. Как видим, наименования​ на цвете, которым​

​=B2=Лист2!B2​​ второй таблице. Получилось​’5.​
​ форуме нужный мне​ и нажав​: БМВ,​

​ E3:E8. Обратите внимание,​​ эта привязка к​Формула созданная совместными​:(
​ всё таки часть​5|12​: Извините,что не доглядел​ Next ws.Range(ws.[f2], ws.Cells(gLR,​ нумерацией листа Excel​будет сообщать функции​
​ полей в этом​ хотим окрашивать те​То есть, как видим,​ выражение следующего типа:​[h3].Resize(ii, 1) =​ ответ, не нашел.​Ctrl+Enter​а клянчить у​ что теперь мы​
​ активной в некий​ усилиями​ комбинаций меняется(так и​5|37​ отсутствие файла.Хотя с​

​ 6)).Value = f​​ и внутренней нумерацией​ЕСЛИ​ окне соответствуют названиям​ элементы, где данные​ перед координатами данных,​=A2=D2​
​ c​Есть два числовых​
​удалить все строки с​

​ автора «расскажите как​​ используем абсолютные адреса​ момент книге/листу… Ещё​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММ((A3:A15=ТРАНСП(ЕСЛИ(H7:H15​​ должно быть). Фильтрацию​
​5|44​
​ нашей связью...​ End Sub​
​ табличной области. Как​
​номер строки, в​
​ аргументов.​
​ не будут совпадать.​ которые расположены на​
​Хотя, конечно, в каждом​End Sub​ столбца - задача​
​ выделенными ячейками, используя​
​ считать, расскажите как​
​ ссылок на диапазон​ куча MISSING, ну​
​Travelstar​ этого я сделаю​5|7​
​Hugo​Фдуч1985​ видим, над табличными​
​ которой расположена конкретная​
​Устанавливаем курсор в поле​
​ Жмем на кнопку​

​ других листах, отличных​​ конкретном случае координаты​
​Hugo​ сравнить первый массив​ команду​ считать…» — это​ $A$2:$A$12 во втором​ да это меньшее…​

​: Доброго времени суток!​​ функциями листа.Ваше решение​5|74​
​: Не совсем понял,​: Круто! Хорошо работает!​

excelworld.ru

Как сравнить два столбца таблицы Excel на совпадения значений

​ значениями у нас​ фамилия, и в​«Диапазон»​«OK»​ от того, где​ будут отличаться, но​: Карен, чего-то врёт​ со вторым и​Главная — Удалить -​ не перебор?​ аргументе функции СОВПАД.​Покажите два файла,​Прошу помощи в​ меня устраивает,поэтому наверное​6|0​ как Вам нужен​ А можно еще​ только шапка. Это​ случае, когда условие,​. После этого, зажав​.​ выводится результат сравнения,​ суть останется одинаковой.​ фильтр — вот​ вывести те числа​ Удалить строки с​

Функция СОВПАД позволяет сравнить два столбца таблицы

​АlехМ,​Скачать формулу для сравнения​ напишите код открытия​ написании функции для​

Две таблицы.

​ тему можно закрыть.Спасибо.​6|31​ список, да и​

  1. ​ заложить в код​ значит, что разница​ заданное в первом​
  2. ​ левую кнопку мыши,​Вернувшись в окно создания​
  3. ​ указывается номер листа​Щелкаем по клавише​ эти есть в​ в отдельную строку​ листа (Home -​а выложил бы​ двух столбцов таблиц​ этих конкретных файлов,​ сравнения двух двумерных​lom55​

СОВПАД.

​6|7​ это вероятно не​ изменение площади в​ составляет одну строку.​ поле, будет выполняться,​ выделяем все значения​ правила форматирования, жмем​

​ и восклицательный знак.​

​Enter​ обоих списках:​ либо столбец, которых​

​ Delete — Delete​ автор файл, что​ на совпадение​ определения диапазонов, передачу​ массивов размерностью .​: Доброго времени суток.​megavlom​ главное — поэтому​ районе 3% или​ Поэтому дописываем в​ функция​ столбца с фамилиями​ на кнопку​Сравнение можно произвести при​, чтобы получить результаты​1-38/2012​ нет во втором​ Rows)​ измениться бы? Вы​В первом аргументе должны​ диапазонов на сравнение​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​Сравнительно недавно начал​

​: Список -просто вывод​ пока вывожу в​ это космос получится?​ поле​ЕСЛИ​ второй таблицы. Как​

Сравнение на совпадение.

​«OK»​ помощи инструмента выделения​ сравнения. Как видим,​1-52/2012​ массиве.​и т.д.​ знаете как посчитать​ быть относительные адреса​ — вот тогда​Function Compare(arr1 As​ осваивать excel и​

​ всех совпадающих в​ окно отладки (можно​ikki​

​«Номер строки»​будет выводить этот​ видим, координаты тут​.​ групп ячеек. С​

exceltable.com

Сравнение двух массивов чисел в эксель

​ при сравнении первых​​1-65/2012​Помогите кто чем​Если списки разного размера​ «схожесть» двух массивов?​ ссылок на ячейки​ можно посмотреть что​ Variant, arr2 As​ в поисках решения​ 3 массивах комбинаций.К​
​ на лист/массив/строку выводить):​: и где у​
​значение​ номер в ячейку.​ же попадают в​После автоматического перемещения в​ его помощью также​ ячеек обоих списков​1-114/2012​
​ может!!!​ и не отсортированы​
​ дайте мне ссылку​ (как и в​ где как сравнивается​ Variant)​ своей задачи набрел​ сожалению проверить макрос​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Option Explicit​ вас площадь? я​«-1»​

​ Жмем на кнопку​​ указанное поле. Но​ окно​

​ можно сравнивать только​​ программа указала показатель​1-117/2012​

​Заранее выражаю благодарность​​ (элементы идут в​ на раздел математики​ предыдущем примере).​ или нет.​’ массивы типа​ на ваш прекрасный​

​ и отписаться смогу​​Sub tt()​ не телепат, сорри​

​без кавычек.​​«OK»​ для наших целей​«Диспетчера правил»​ синхронизированные и упорядоченные​«ИСТИНА»​

​1-109/2012​​ откликнувшимся на проблему!​ разном порядке), то​
​ «массивы и схожести»​Akazotik​Я так и​ Variant — хранят​

​ форум.) В поиске​​ только второго числа.​Dim a, b,​это будет​В поле​.​ следует сделать данный​щелкаем по кнопке​ списки. Кроме того,​, что означает совпадение​1-84/2012​k61​ придется идти другим​ я почитаю и​: Приветствую всех. Возникла​
​ не смог ничего​

​ диапазоны значений -​​ решения не нашел.​Hugo​ c, oDict1 As​совершенно​«Массив»​Как видим, первый результат​ адрес абсолютным. Для​«OK»​ в этом случае​ данных.​У меня недавно​: Sub wwww()​ путем.​

​ тоже буду знать.​​ проблема с сравнением​ запустить — какие​ каждый по 2​Столкнулся я со​: Хорошо.​ Object, oDict2 As​другой код.​

​указываем адрес диапазона​​ отображается, как​ этого выделяем данные​и в нем.​:)
​ списки должны располагаться​Теперь нам нужно провести​ было 11111 -​Dim x As​Самое простое и быстрое​БМВ​

​ массивов в экселе.​​ файлы открывать, что​ столбца​ следующей трудностью :​Первый вариант -​

​ Object, oDict3 As​​нужен другой подход​ значений второй таблицы.​«ЛОЖЬ»​ координаты в поле​Теперь во второй таблице​ рядом друг с​ аналогичную операцию и​ тоже пару постов​ Range​

​ решение: включить цветовое​​: Ігор Гончаренко,​ Суть вопроса: есть​ нажимать…​Sheets(1).Activate​ есть массив из​ как раз выводит​ Object​ — и я​ При этом все​. Это означает, что​

​ и жмем на​​ элементы, которые имеют​
​ другом на одном​ с остальными ячейками​ разлогиненным писал :)​Dim y As​

​ выделение отличий, используя​​Я надеялся что​ два массива разной​SkyPro​Dim i As​ N элементов и​

​ список всех совпадающих.​​Dim x​ пока даже не​ координаты делаем абсолютными,​

​ значение не удовлетворяет​​ клавишу​
​ данные, несовпадающие с​ листе.​ обеих таблиц в​Hugo​ Range​
​ условное форматирование. Выделите​
​ ТС поймет что​ длины с числами.​: В месте, где​ Long​ массив из M​Второй вариант -​a = [a3:f16]​ определился, какой именно.​ то есть, ставим​ условиям оператора​

​F4​​ соответствующими значениями первой​
​Выделяем сравниваемые массивы. Переходим​ тех колонках, которые​: И кстати -​s1 = 1​ оба диапазона с​ проблема не с​ Требуется найти меру​ у вас функция​Dim k As​ элементов ,содержащий все​ список с признаком​b = [a19:f32]​кстати, скорее всего,​ перед ними знак​ЕСЛИ​.​ табличной области, будут​ во вкладку​
​ мы сравниваем. Но​

​ числовыми массивами тут​​ ‘столб со значениями​ данными и выберите​
​ Excel, а с​ похожести данных массивов​ сравнения, выведите на​ Long​ значения первого массива​ колонок. В разных​c = [a35:f48]​ будет работать на​ доллара уже ранее​. То есть, первая​Как видим, ссылка приняла​

​ выделены выбранным цветом.​​«Главная»​ можно просто провести​ и «не пахнет»!​ которые ищем​

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

​For i =​​ (где M>N). Нужно​

​ колонках могут быть​​Set oDict1 =​ порядок медленнее.​ описанным нами способом.​ фамилия присутствует в​
​ абсолютную форму, что​Существует ещё один способ​

​. Далее щелкаем по​​ копирование формулы, что​Guest​s2 = 3​Главная — Условное форматирование​ конце концов первая​Сслыка на пример​ и покажите их​ LBound(arr1) To UBound(arr1)​:(​ их сравнить и​ одинаковые числа.​
​ CreateObject(«scripting.dictionary»)​Фдуч1985​Жмем на кнопку​ обоих списках.​ характеризуется наличием знаков​ применения условного форматирования​

planetaexcel.ru

Поиск отличий в двух списках

​ значку​ позволит существенно сэкономить​: Да, действительно врёт.​ ‘столб в котором​ — Правила выделения​ ссылка худо-бедно дает​ подобной задачи:​ здесь.​For k =​ получить массив из​

Вариант 1. Синхронные списки

​nilem​Set oDict2 =​: Ой Площадь обозначается​«OK»​С помощью маркера заполнения,​ доллара.​ для выполнения поставленной​«Найти и выделить»​ время. Особенно данный​ :(​ ищем​ ячеек — Повторяющиеся​​ понимание что имеется​​Была попытка решить​​Вывести можно вот​​ LBound(arr2) To UBound(arr2)​

Excel сравнение массивов

​ M элементов (нулей​: Вариант с УФ,​

​ CreateObject(«scripting.dictionary»)​

​ в 3-м столбце)​.​

​ уже привычным способом​Затем переходим к полю​ задачи. Как и​, который располагается на​ фактор важен при​Скрытые фильтром не​s3 = 4​ значения (Home -​ в виду, но​ данную задачу через​​ так:​​If arr1(i, 1)​​ и единиц в​​ доп. табличками, формулами​

​Set oDict3 =​ikki​После вывода результат на​ копируем выражение оператора​«Критерий»​ предыдущие варианты, он​​ ленте в блоке​​ сравнивании списков с​ проверяет?​​ ‘столб в который​​ Conditional formatting -​​ доп условие, о​ пропорции, но в​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>[a1].resize(ubound(имя_массива), 2) = имя_массива​ = arr2(k, 2)​ местах совпадения значений​​ и макросом (хотел​ CreateObject(«scripting.dictionary»)​: давайте на всякий​ экран протягиваем функцию​​ЕСЛИ​​, установив туда курсор.​

Excel сравнение массивов

​ требует расположения обоих​ инструментов​ большим количеством строк.​У нас эвакуация​

  • ​ записываем НЕ найденные​ Highlight cell rules​
  • ​ разной размерности, делает​​ связи с наличием​
  • ​Travelstar​ Then ‘ тут​ елементов — все​​ еще сводную прикрутить​
  • ​For Each x​ случай уточним задачу?​ с помощью маркера​​на весь столбец.​ Щелкаем по первому​ сравниваемых областей на​«Редактирование»​Процедуру копирования легче всего​
  • ​ по случаю окончания​

Вариант 2. Перемешанные списки

​Columns(s3).Clear​ — Duplicate Values)​ её бесполезной. Беда​ пустых ячеек и​: Вот и значения​ сравниваю первую колонку​

​ это в одной​ — не придумалось​ In a​надо:​ заполнения до конца​ Как видим, по​ элементу с фамилиями​​ одном листе, но​. Открывается список, в​ выполнить при помощи​ рабочего дня. Завтра​Set x =​:​ в том, что​​ разной длины массивов​

Excel сравнение массивов

​ массивов​​ первого массива и​​ строке). Желательно с​)​If Len(x) Then​для каждой записи​​ столбца вниз. Как​​ двум позициям, которые​

​ в первом табличном​ в отличие от​ котором следует выбрать​ маркера заполнения. Наводим​ разберу….​ Range(Cells(1, s1), Cells(Cells(Rows.Count,​Если выбрать опцию​ при наличии методики​

​ идея невозымела успеха.​nilem​​ вторую колонку второго​ ​ помощью формул, так​​Сортировка по 6-ти​​ oDict1.Item(x) = x​​ из «правой» таблицы​ видим, обе фамилии,​ присутствуют во второй​ диапазоне. В данном​

Excel сравнение массивов

​ ранее описанных способов,​ позицию​ курсор на правый​

​Подпись: Карен.​ s1).End(xlUp).Row, s1))​Повторяющиеся​ задача становится, скорее​Заранее спасибо за​

Excel сравнение массивов

​: например:​ массива​ как на освоение​

planetaexcel.ru

Сравнение массивов (Формулы/Formulas)

​ столбцам почему-то не​​Next​
​ найти в «левой»​ которые присутствуют во​ таблице, но отсутствуют​ случае оставляем ссылку​ условие синхронизации или​«Выделение группы ячеек…»​ нижний угол ячейки,​clever2012​Set y =​, то Excel выделит​ всего ,элементарной для​ помощь.​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ertert()​If arr1(i, 2)​
​ макросов пока нет​ идет, сделал по​For Each x​ таблице хотя бы​ второй таблице, но​ в первой, формула​ относительной. После того,​ сортировки данных не​.​ где мы получили​: Спасибо за суету​ Range(Cells(1, s2), Cells(Cells(Rows.Count,​ цветом совпадения в​ кодирования , а​Ccылки на файлик​Dim x, i&,​
​ = arr2(k, 1)​ времени да и​

​ 3-м.​​ In b​ одну в точности​
​ отсутствуют в первой,​ выдает номера строк.​ как она отобразилась​ будет являться обязательным,​Кроме того, в нужное​ показатель​ Карен. Буду ждать​ s2).End(xlUp).Row, s2))​ наших списках, если​ может и нет.​ с массивами и​ s$​ Then ‘ если​ большой необходимости.​

​MCH​​If Len(x) Then​​ соответствующую ей по​​ выведены в отдельный​Отступаем от табличной области​ в поле, можно​

​ что выгодно отличает​​ нам окно выделения​«ИСТИНА»​

​ завтрашнего дня.​​i = 1​ опцию​
​P.S. Бессонница? :-)​

​ попытками сравнения (Файл​​x = Range(«A1»).CurrentRegion.Value​​ ввреху всё ОК,​​Свои старания прикрепляю​: Ну и мой​ oDict2.Item(x) = x​ первым двум полям​ диапазон.​ вправо и заполняем​ щелкать по кнопке​ данный вариант от​ группы ячеек можно​. При этом он​
​Hugo​For Each w​
​Уникальные​

​АlехМ​​ «Тон чистый», вкладка​
​With CreateObject(«Scripting.Dictionary»)​ то сравниваю вторую​
​ в файле.)​
​ вариант формулами (в​
​Next​ запись, причем значение​
​При сравнении диапазонов в​
​ колонку номерами по​«OK»​
​ ранее описанных.​ попасть и другим​

excelworld.ru

Сравнение двух числовых массивов.

​ должен преобразоваться в​​: Ну ждите, ждите…​ In x​- различия.​
​: Возможно не массивы​ 1+2), а так​.CompareMode = 1​ колонку первого и​Формуляр​ желтых ячейках)​For Each x​ третьего поля должно​ разных книгах можно​

​ порядку, начиная от​.​

​Производим выделение областей, которые​ способом. Данный вариант​

​ черный крестик. Это​​ :)​
​If y.Find(w, LookAt:=xlWhole)​Цветовое выделение, однако, не​
​ нужно сравнивать.​ же на изначальные​
​For i =​ первую колонку второго…​: Если цифры в​
​megavlom​ In c​ отличаться не более​
​ использовать перечисленные выше​1​В элемент листа выводится​
​ нужно сравнить.​
​ особенно будет полезен​ и есть маркер​Fishka​
​ Is Nothing Then​ всегда удобно, особенно​На другом форуме​
​ массивы (Файлы «Фраза​
​ 2 To UBound(x)​Cells(i, 2).Interior.Color =​
​ ст-це 2 всегда​: Здравствуйте Уважаемые Форумчане.Спасибо​
​If Len(x) Then​ чем на 3%.​
​ способы, исключая те​
​. Количество номеров должно​
​ результат. Он равен​
​Выполняем переход во вкладку​
​ тем пользователям, у​

​ заполнения. Жмем левую​​: clever2012​
​Cells(i, s3) =​ для больших таблиц.​
​ файл есть, и​ 1″ и «Фраза​
​.Item(x(i, 1) &​ 255 ‘ ну​ совпадают с номером​
​ за Ваш труд​ oDict3.Item(x) = x​если ни одной​
​ варианты, где требуется​ совпадать с количеством​ числу​
​ под названием​
​ которых установлена версия​ кнопку мыши и​В надстройке есть​
​ w​
​ Также, если внутри​ в файле есть,​
​ 2″, вкладки Тон)​
​ x(i, 2)) =​
​ и если совпало​ буквы, то вспомогательная​ и помощь.Вам nilem​
​Next​
​ такой записи не​ размещение обоих табличных​
​ строк во второй​«1»​
​«Главная»​ программы ранее Excel​
​ тянем курсор вниз​
​ «Сравнение диапазонов» (раздел​
​i = i + 1​
​ самих списков элементы​
​ как автор написал,​
​Akazotik​

​ i​​ — что-то делаю..​ таблица не нужна.​ особое спасибо.Вы догадались​For Each x​ найдено, то напротив​ областей на одном​

​ сравниваемой таблице. Чтобы​​. Это означает, что​. Делаем щелчок по​ 2007, так как​ на количество строчек​
​ 2). Ваши столбцы​End If​ могут повторяться, то​ формулы сравнения массивов.​
​: надо составить функцию​Next i​End If​

​lom55​​ ,что мне надо.Сейчас​

​ In oDict1.Items​​ искомой записи слева​
​ листе. Главное условие​ ускорить процедуру нумерации,​
​ в перечне имен​ кнопке​ метод через кнопку​ в сравниваемых табличных​

​ сравнились и данные​​Next​

​ этот способ не​
​ К сожалению формул​ сравнения элементов массива​
​x = Range(«D1»).CurrentRegion.Value​End If​
​: Спасибо,что откликнулись!​ постараюсь понять макрос.Возможно​If oDict2.exists(x) Then​
​ ставим единичку.​ для проведения процедуры​ можно также воспользоваться​ второй таблицы фамилия​
​«Условное форматирование»​«Найти и выделить»​ массивах.​

​ правильно вывелись.​
​Beep​ подойдет.​ таких там не​Bema​

​For i =​
​Next k​
​Вторая таблица не​

​ задам пару вопросов​
​If oDict3.exists(x) Then​так?​ сравнения в этом​

​ маркером заполнения.​

​«Гринев В. П.»​
​. В активировавшемся списке​эти приложения не​
​Как видим, теперь в​clever2012​
​End Sub​

​В качестве альтернативы можно​
​ обнаружил. Зато есть​: Не хорошо помогающих​
​ 1 To UBound(x)​Next i​ спомагательная — она​ по нему(если что-то​Debug.Print x​
​Фдуч1985​

​ случае – это​

​После этого выделяем первую​
​, которая является первой​ выбираем позицию​

​ поддерживают. Выделяем массивы,​

​ дополнительном столбце отобразились​​: Замечательная вещь. Спасибо​k61​ использовать функцию​ формула определяющая абсолютную​

​ по ссылкам гонять.​
​s = x(i,​
​End Function​
​ имеет свое назначение.)​
​ не пойму).​
​End If​
​: Точно, так​

​ открытие окон обоих​ ячейку справа от​ в списке первого​«Правила выделения ячеек»​

​ которые желаем сравнить,​​ все результаты сравнения​ за совет. Тема​: Sub wwww()​

​СЧЁТЕСЛИ​​ величину разницы некого​Akazotik​
​ 2) & x(i,​Данные сравниваются, но​
​ Числа в столбце​megavlom​End If​ikki​
​ файлов одновременно. Для​

​ колонки с номерами​​ табличного массива, встречается​. В следующем меню​ и жмем на​

​ данных в двух​​ закрыта​Dim x As​

​(COUNTIF)​​ значения и 100.​

​: А тут можно​ 1)​ почему-то не все.​ «2» не совпадают.​: Добрый вечер.У меня​

​Next​​: проверяйте​ версий Excel 2013​ и щелкаем по​

planetaexcel.ru

​ один раз.​

Skip to content

Сравнение ячеек в Excel

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

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

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

  • Как сравнить две ячейки без учета и с учетом регистра букв.
  • Сравниваем сразу несколько ячеек.
  • Сравнение нескольких ячеек с образцом
  • Содержимое какой ячейки длиннее?
  • Одинаковы ли ячейки по количеству вхождений определённого символа?

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

Как сравнить две ячейки в Excel.

Существует два разных способа выяснения тождества текстовых данных в Excel в зависимости от того, требуется ли это делать с учетом регистра или без него.

Формула без учета регистра.

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

=A1=B1

Где A1 и B1 – объекты для сопоставления. Результатом являются логические значения ИСТИНА и ЛОЖЬ.

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

=ЕСЛИ(A2=B2; «Совпадает»; «НЕ совпадает»)

Как вы видите на скриншоте ниже, обе формулы одинаково хорошо сравнивают текст, даты и числа:

Формула с учетом регистра.

В некоторых ситуациях может быть важно не просто сравнить текст, но и учесть регистр символов. Сопоставлениес учетом регистра можно выполнить с помощью функции Excel СОВПАД (EXACT в английской версии):

СОВПАД(текст1; текст2)

Где текст1 и текст2 — две сравниваемые ячейки.

Предполагая, что ваши значения находятся в A2 и B2, расчёт выглядит следующим образом:

=СОВПАД(A2; B2)

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

Если вы хотите, чтобы функция СОВПАД выдавала другие результаты, вставьте ее в формулу ЕСЛИ и введите свой собственный текст для вариантов ответа:

=ЕСЛИ(СОВПАД(A2; B2); «Совпадает»; «НЕ совпадает»)

На следующем скриншоте показаны результаты с учетом регистра:

Как сравнить несколько ячеек в Excel

Чтобы сопоставить между собой более 2 ячеек, используйте выражения, описанные в приведенных выше примерах, в сочетании с оператором И. 

Формула без учета регистра для более чем двух ячеек

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

=И(A2=B2; A2=C2)

или

=ЕСЛИ(И(A2=B2; A2=C2); «Совпадает»; «НЕ совпадает»)

Оператор И возвращает ИСТИНА, если все клетки таблицы содержат одно и то же значение, ЛОЖЬ, если любое значение отличается. Функция ЕСЛИ выводит введенные вами метки: «Совпадает» и «Не совпадает».

Как показано на скриншоте ниже, формула отлично работает с любыми типами данных — текстом, датами и числовыми значениями:

Сравниваем несколько ячеек с учетом регистра букв.

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

=И(СОВПАД(A2;B2); СОВПАД(A2; C2))

или

=ЕСЛИ(И(СОВПАД(A2;B2);СОВПАД(A2; C2));»Точное совпадение»; «НЕ совпадает»)

Как и в предыдущем примере, первая формула выдает значения ИСТИНА и ЛОЖЬ, тогда как вторая отображает ваши собственные сообщения для совпадений и различий:

Если же нам достаточно хотя бы двух совпадений значений, то сделаем это так:

=ЕСЛИ(ИЛИ(СОВПАД(A2;B2);СОВПАД(A2; C2);СОВПАД(B2;C2)); «Не менее 2 точных совпадений»; «НЕ совпадает»)

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

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

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

{=СЧЁТЕСЛИ(A2:D2;A2:D2)}

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

=ЕСЛИ(СЧЁТЕСЛИ(A2:D2;A2:D2)=СЧЁТЗ(A2:D2);»Полное совпадение»;»»)

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

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

Сравните диапазон ячеек с образцом.

В следующих примерах показано, как можно проверить, что все адреса в заданном диапазоне содержат тот же текст, что и в ячейке-образце.

Совпадает ли ячейка с образцом?

Если регистр символов не имеет значения, вы можете использовать для сопоставления с образцом примерно такое выражение:

ЧСТРОК( диапазон ) * ЧИСЛСТОЛБ( диапазон ) = СЧЁТЕСЛИ( диапазон ; ячейка образца )

В логической проверке функции ЕСЛИ вы проверяете равенство двух чисел:

  1. Общее количество ячеек в указанном диапазоне (количество строк, умноженное на количество столбцов), и
  2. Количество ячеек, содержащих то же значение, что и в образце (возвращенное функцией СЧЁТЕСЛИ ).

Предполагая, что образец текста находится в C2, а данные находятся в диапазоне A2: B6, формула выглядит следующим образом:

(ЧСТРОК(A2:B6)*ЧИСЛСТОЛБ(A2:B6))=СЧЁТЕСЛИ(A2:B6;C2)

Чтобы сделать результаты более удобными для пользователя, т. е. вывести осмысленный текст вместо ИСТИНА и ЛОЖЬ, используйте функцию ЕСЛИ, как мы делали в предыдущих примерах:

=ЕСЛИ((ЧСТРОК(A2:B6)*ЧИСЛСТОЛБ(A2:B6))=СЧЁТЕСЛИ(A2:B6;C2);»Всё совпадает»; «Есть несовпадения»)

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

Проверяем совпадение с образцом с учётом регистра букв.

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

ЕСЛИ((ЧСТРОК(диапазон )*ЧИСЛСТОЛБ(диапазон ))=(СУММ(—СОВПАД( образец ; диапазон ))); «текст_если_ совпадает»;»текст_если_НЕ_совпадает»)

Поскольку исходный диапазон находится в области A2: B6, а образец текста — в C2, получаем следующее:

{=ЕСЛИ((ЧСТРОК(B2:C6)*ЧИСЛСТОЛБ(B2:C6))=(СУММ(—СОВПАД(C2;B2:C6))); «Всё совпадает»;»НЕ совпадает»)}

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

Как соотнести две ячейки по длине.

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

Предположим, что исходные значения находятся в A2 и B2. Используйте любой из вариантов:

=ДЛСТР(A2)=ДЛСТР(B2)

или

=ЕСЛИ(ДЛСТР(A2)=ДЛСТР(B2); «Равная длина»; «Длины не равны»)

Как вы понимаете, первый возвращает логические значения ИСТИНА или ЛОЖЬ, тогда как второй выводит ваши собственные результаты:

Как показано на скриншоте выше, формулы работают как для текста, так и для чисел.

Примечание. Если две, казалось бы, одинаковые ячейки с текстом возвращают разную длину, скорее всего, проблема в начальных или конечных пробелах в одной или обеих из них. В этом случае удалите лишние пробелы с помощью функции СЖПРОБЕЛЫ. Подробное объяснение и примеры можно найти здесь: Как удалить пробелы в Excel .

Сравниваем две ячейки по вхождению определенного символа

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

Чтобы было понятнее, рассмотрим следующий пример. Допустим, у вас есть два списка отгруженных заказов (столбец B) и полученных (столбец C). Каждая запись таблицы содержит заказы на конкретный товар, уникальный идентификатор которого включен во все идентификаторы заказа и указан в той же строке в столбце A (см. скриншот ниже). Вы хотите убедиться, что каждая строка содержит равное количество отправленных и полученных товаров с этим конкретным идентификатором.

Чтобы решить эту проблему, будем действовать следующим образом:

  • Во-первых, замените код заказа ничем с помощью функции ПОДСТАВИТЬ:

ПОДСТАВИТЬ(A1; код;»»)

  • Затем подсчитайте, сколько раз код появляется в каждой ячейке. Для этого получите длину её содержимого без кода и вычтите ее из общей первоначальной длины ячейки. Эта операция должна быть выполнена для 1 и 2 ячейки отдельно, например:

ДЛСТР(B2)-ДЛСТР(ПОДСТАВИТЬ(B2; $A2;»»))

а также

ДЛСТР(C2)-ДЛСТР(ПОДСТАВИТЬ(C2; $A2;»»))

  • Теперь вы приравниваете эти 2 числа, поместив знак равенства (=) между указанными выше частями.

ДЛСТР(B2)-ДЛСТР(ПОДСТАВИТЬ(B2; $A2;»»)) = ДЛСТР(C2)-ДЛСТР(ПОДСТАВИТЬ(C2; $A2;»»))

В нашем примере код находится в A2, а значения находится в B2 и C2. 

Выражение возвращает ИСТИНА, если B2 и C2 содержат одинаковое количество вхождений символа из A2, в противном случае — ЛОЖЬ. Чтобы сделать результаты более понятными для ваших пользователей, вы можете встроить его в функцию ЕСЛИ:

=ЕСЛИ(ДЛСТР(B2)-ДЛСТР(ПОДСТАВИТЬ(B2; $A2;»»)) = ДЛСТР(C2)-ДЛСТР(ПОДСТАВИТЬ(C2; $A2;»»)); «Совпадает»; «НЕ совпадает»)

Как вы можете видеть на скриншоте выше, всё работает отлично, несмотря на пару дополнительных сложностей:

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

Вот как можно при помощи формул можно сравнивать ячейки в Excel. Благодарю вас за чтение.

Функция ЕСЛИОШИБКА – примеры формул В статье описано, как использовать функцию ЕСЛИОШИБКА в Excel для обнаружения ошибок и замены их пустой ячейкой, другим значением или определённым сообщением. Покажем примеры, как использовать функцию ЕСЛИОШИБКА с функциями визуального…
9 способов сравнить две таблицы в Excel и найти разницу В этом руководстве вы познакомитесь с различными методами сравнения таблиц Excel и определения различий между ними. Узнайте, как просматривать две таблицы рядом, как использовать формулы для создания отчета о различиях, выделить…
Вычисление номера столбца для извлечения данных в ВПР Задача: Наиболее простым способом научиться указывать тот столбец, из которого функция ВПР будет извлекать данные. При этом мы не будем изменять саму формулу, поскольку это может привести в случайным ошибкам.…
проверка правильности ввода Excel при помощи функции ЕСЛИ Как проверить правильность ввода данных в Excel? Подтверждаем правильность ввода галочкой. Задача: При ручном вводе данных в ячейки таблицы проверять правильность ввода в соответствии с имеющимся списком допустимых значений. В случае правильного ввода в отдельном столбце ставить…
ЕСЛИ + СОВПАД текст Функция ЕСЛИ: проверяем условия с текстом Рассмотрим использование функции ЕСЛИ в Excel в том случае, если в ячейке находится текст. СодержаниеПроверяем условие для полного совпадения текста.ЕСЛИ + СОВПАДИспользование функции ЕСЛИ с частичным совпадением текста.ЕСЛИ + ПОИСКЕСЛИ…
функция если Визуализация данных при помощи функции ЕСЛИ Функцию ЕСЛИ можно использовать для вставки в таблицу символов, которые наглядно показывают происходящие с данными изменения. К примеру, мы хотим показать в отдельной колонке таблицы, происходит рост или снижение продаж.…
ЕСЛИ с датами 3 примера, как функция ЕСЛИ работает с датами. На первый взгляд может показаться, что функцию ЕСЛИ для работы с датами можно применять так же, как для числовых и текстовых значений, которые мы только что обсудили. К сожалению, это…

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Function GetAnotherWorkbook() As Workbook
   On Error Resume Next
    Dim coll As New Collection, wB As Workbook
    For Each wB In Workbooks
        If wB.Name <> ActiveWorkbook.Name Then
            If Windows(wB.Name).Visible Then coll.Add CStr(wB.Name)
        End If
    Next wB
    Select Case coll.Count
        Case 1    ' открыта еще только одна книга - ее и возвращаем
           Set GetAnotherWorkbook = Workbooks(coll(1))
            If IsNumeric(res) Then Set GetAnotherWorkbook = Workbooks(coll(Val(res)))
    End Select
End Function
 
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 1) As Collection
    ' Получает в качестве параметра путь к папке FolderPath,
   ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
   ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
   ' Возвращает коллекцию, содержащую полные пути найденных файлов
   ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)
 
    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
   Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
   GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ' поиск
   Set FSO = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function
 
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
                                 ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
   ' перебор папок осуществляется в том случае, если SearchDeep > 1
   ' добавляет пути найденных файлов в коллекцию FileNamesColl
   On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке
 
        ' раскомментируйте эту строку для вывода пути к просматриваемой
       ' в текущий момент папке в строку состояния Excel
        'Application.StatusBar = "Поиск в папке: " & FolderPath
 
        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
           If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
       If SearchDeep Then    ' если надо искать глубже
           For Each sfol In curfold.SubFolders    ' перебираем все подпапки в папке FolderPath
               GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
   End If
End Function
 
Sub ChangeFolder()    ' для отдельной кнопки - если вдруг надо поменять ранее выбранную папку
   On Error Resume Next: GetFolder , True
End Sub
Function GetFolder(Optional ByVal FolderIndex& = 0, Optional ByVal ShowDialog As Boolean = False, _
                   Optional ByVal Title$ = "Выберите папку", Optional ByVal InitialFolder$) As String
    ' При первом вызове выводит диалогое окно выбора папки
   ' Запоминает выбранную папку, и при следующих вызовах диалоговое окно не выводит,
   ' а возвращает путь к ранее выбиравшейся папке
   ' Используйте вызов с параметром ShowDialog=TRUE для принудительного отображения диалогового окна
   On Error Resume Next: Err.Clear
    ProjectName$ = IIf(Len(PROJECT_NAME$) > 0, PROJECT_NAME$, "SelectFolder")
    PreviousFolder$ = GetSetting(Application.Name, ProjectName$, "folder" & FolderIndex&, "")
    If Len(PreviousFolder$) > 0 And Not ShowDialog Then
        If Dir(PreviousFolder$, vbDirectory) <> "" Then GetFolder = PreviousFolder$: Exit Function
    End If
 
    If InitialFolder$ = "" Then
        If Len(PreviousFolder$) > 0 And Dir(PreviousFolder$, vbDirectory) <> "" Then
            InitialFolder$ = PreviousFolder$    ' начинаем обзор с ранее выбранной папки
       Else
            InitialFolder$ = ThisWorkbook.Path & ""    ' начинаем с текущей папки
       End If
    End If
 
    With Application.FileDialog(msoFileDialogFolderPicker)    ' вывод диалогового окна
       .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialFolder$
        If .Show <> -1 Then Exit Function    ' если пользователь отказался от выбора папки
       GetFolder = .SelectedItems(1)
        If Not Right$(GetFolder, 1) = "" Then GetFolder = GetFolder & ""
        SaveSetting Application.Name, ProjectName$, "folder" & FolderIndex&, GetFolder
    End With
End Function
 
Sub Otd()
On Error Resume Next: Err.Clear
    Dim AskForFolder As Boolean: AskForFolder = 1
    'Not shd.OLEObjects("SaveFolderPath").Object.Value
 
    ' запрашиваем пути к папкам с файлами
    msg1 = "Выберите папку с файлами "
    InvoiceFolder$ = GetFolder(1, AskForFolder, msg1)
    If InvoiceFolder$ = "" Then MsgBox "Не указан папка с файлами", vbCritical, "выполнить макрос невозможно": Exit Sub
 
    Dim coll As Collection
    ' загружаем список файлов по маске имени файла
    Set coll = FilenamesCollection(InvoiceFolder$, "*.xls*", 1)
 
    If coll.Count = 0 Then
        MsgBox "Нет ни одного файла в папке" & vbNewLine & InvoiceFolder$, _
               vbExclamation, "ВНИМАНИЕ!!!"
        Exit Sub
    End If
    
        Dim wB As Workbook, sh As Worksheet, ra As Range
    Application.ScreenUpdating = False  ' отключаем обновление экрана (чтобы процесс открытия файлов не был виден)
 
    ' перебираем все найденные в папке файлы
    For Each Filename In coll
 
       ' открываем очередной файл в режиме «только чтение»
        Set wB = Nothing: Set wB = Workbooks.Open(Filename, False, False)
 
        If wB Is Nothing Then    ' не удалось открыть файл
            pi.Log vbTab & "Ошибка загрузке файла. Файл не сделан."
 
        Else    ' файл успешно открыт
 
'------Start
 
Set WS1 = ActiveWorkbook
Set wB = GetAnotherWorkbook
Application.ScreenUpdating = False
 
With WS1.Sheets("Ресурси")
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
a = .Range("A1:A" & Lr).Value
Set sd = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(a)
        sd.Item(a(i, 1)) = ""
    Next
    
For i = 5 To wB.Sheets("Ресурси").Cells(Rows.Count, 1).End(xlUp).Row
    If Not sd.Exists(wB.Sheets("Ресурси").Cells(i, 1).Value) Then
        sd.Item(wB.Sheets("Ресурси").Cells(i, 1).Value) = ""
        Lr = Lr + 1
        .Cells(Lr, 1) = wB.Sheets("Ресурси").Cells(i, 1)
        .Cells(Lr, 2) = wB.Sheets("Ресурси").Cells(i, 2)
        .Cells(Lr, 3) = wB.Sheets("Ресурси").Cells(i, 3)
    End If
Next
End With
        
ActiveWorkbook.Save
ActiveWorkbook.Close
 
'------Stop
        
        End If
    Next
 
    ' включаем обновление экрана
    Application.ScreenUpdating = True
    
    MsgBox "Файлы сделаны", vbInformation
     
End Sub

Сравнение диапазона ячеек с массивом

PIRATSTEN

Дата: Пятница, 29.03.2019, 18:52 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Перво наперво приветствую всех участников форму. Уже лет 10 как ни на каких форумах не регистрировался. Увидев стандартную форму регистрации (Придумайте подпись), ностальгически улыбнулся.
А теперь собственно вопрос.
Имеется таблица из 7 столбцов. 1 столбец дата, остальные 6 набор чисел. Те набор из 6 цифр соответствует дате.
Мне необходимо релизовать следующую задачу: Я ввожу 6 своих чисел и при помощи формулы Excel ищет совпадения с таблицей. Если такой набор чисел уже имеется, то вывести дату которой этот набор соответствует. Если такого набора нет, то вывести «Нет совпадений». Вроде звучит не сложно, но в работе пригождается только порстая арифметика, поэтому все позабылось.
Заранее спасибо!
прикладываю скриншот и сам файл.

К сообщению приложен файл:

0794474.xls
(76.5 Kb)

Сообщение отредактировал PIRATSTENПятница, 29.03.2019, 18:55

 

Ответить

Karataev

Дата: Пятница, 29.03.2019, 19:02 |
Сообщение № 2

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Формула для «J6»:

Код

=СУММЕСЛИМН(I10:I225;J10:J225;J5;K10:K225;K5;L10:L225;L5;M10:M225;M5;N10:N225;N5;O10:O225;O5)

И в ячейке «J6» сделан такой формат, чтобы вместо нуля показывать текст.


Киви-кошелек: 9166309108

 

Ответить

PIRATSTEN

Дата: Пятница, 29.03.2019, 19:51 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Karataev, низкий поклон. Спасли.
Пара моментов. Сравнение вывод результата корректно работает только с датами у которых разделитель точка. Все бы ничего. Но эти разделители не меняются через Формат ячеек-Дата-Тип. Такое ощущение, что перед датой стоит какой-то невидимый знак (не порбел, даже не занимает позицию), т.к. если в строке формулы поставить курсор в начало строки с датой и нажать Backspase и Enter, то тип разделителя сменится на точки. Не сталкивались с такой порблемой? Возможно ли это массово исправить? Руками это оооочень долгий поцесс, т.к. в файле только часть таблицы. Основная же начинается аж с 97 года.

UPD. Извиняюсь. Бэкспейс жать не обязательно. Достаточно поставить курсор в строку с формулой и нажать Enter. Тип даты примет нужный вид.

Сообщение отредактировал PIRATSTENПятница, 29.03.2019, 21:27

 

Ответить

Karataev

Дата: Пятница, 29.03.2019, 20:06 |
Сообщение № 4

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Чтобы даты не преобразовывать, можно использовать такую формулу в «J6»:

Код

=ИНДЕКС(I:I;СУММПРОИЗВ(СТРОКА(I10:I225)*(J10:J225=J5)*(K10:K225=K5)*(L10:L225=L5)*(M10:M225=M5)*(N10:N225=N5)*(O10:O225=O5));1)

В J5:N5 числа преобразуйте в числа. В ячейке видна зеленая стрелка, щелкните её — Преобразовать в число.
Числовой формат тоже изменен.
Но есть недостаток — если нет искомых данных, то будет подставляться текст из левой ячейки (I6).

Даты можно так преобразовать:
1) выделите фрагмент;
2) Данные — Текст по столбцам — ничего не делая, щелкните «Готово».

PS. Не цитируйте посты целиком. Чтобы ответить, не нужно щелкать кнопку «Цитата», а достаточно прокрутить страницу вниз и там будет поле для написания поста. Если хотите к кому-то обратиться, то просто напишите ник.


Киви-кошелек: 9166309108

Сообщение отредактировал KarataevПятница, 29.03.2019, 21:21

 

Ответить

bmv98rus

Дата: Пятница, 29.03.2019, 20:21 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

Код

=—INDEX(I10:I225;MATCH(J5&»_»&K5&»_»&L5&»_»&M5&»_»&N5&»_»&O5;INDEX(J10:J225&»_»&K10:K225&»_»&L10:L225&»_»&M10:M225&»_»&N10:N225&»_»&O10:O225;);))


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

_Boroda_

Дата: Пятница, 29.03.2019, 20:32 |
Сообщение № 6

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Еще вариант

Код

=ЕСЛИОШИБКА(-ПРОСМОТР(;-I10:I225/(6=МУМНОЖ(—(J5:O5=J10:O225);{1:1:1:1:1:1})));»Нет совпадений»)

Код

=ЕСЛИОШИБКА(-ПРОСМОТР(;-I10:I225/(6=МУМНОЖ(—(J5:O5=J10:O225);ТРАНСП(J5:O5)^0)));»Нет совпадений»)

Вторая — формула массива. Вводится одновременным нажатием Контл Шифт Ентер
Еще найденная дата автоматически подкрашивается Условным форматированием


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

PIRATSTEN

Дата: Пятница, 29.03.2019, 20:59 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

2 Karataev, спасибо. Решил порблему вторым способом.
bmv98rus и _Boroda_, тоже спасибо. Буду ковыряться.
ЗЫ отличный форум. И пользователи отзывчивые.

Сообщение отредактировал PIRATSTENПятница, 29.03.2019, 21:02

 

Ответить

bmv98rus

Дата: Пятница, 29.03.2019, 21:02 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

Еще найденная дата автоматически подкрашивается Условным форматированием

Александр. Сегодня акция — получи формулу и УФ в подарок? :-)


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

_Boroda_

Дата: Пятница, 29.03.2019, 21:03 |
Сообщение № 9

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Это было вовсе не так уж обязательно. Вы что, каждый раз после загрузки данных так делать будете? Когда-нибудь забудете
Формулы из постов 5 и 6 (и 4 тоже) все сами за Вас делают, посмотрите приложенные файлы-примеры оттуда

*Акция. Ага. И второй день рулит ПРОСМОТР


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

bmv98rus

Дата: Пятница, 29.03.2019, 21:09 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

это да, а вот MMULТ рулит ли? Вроде не торопливая она.


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

PIRATSTEN

Дата: Пятница, 29.03.2019, 21:13 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

2 all, ну раз общение пошло в треде, то вопрос. Если ответ положительный, то я офигею. Возможно ли мой файл экспортировать в exe и пользоваться им без установки дистрибутива Excel?

 

Ответить

_Boroda_

Дата: Пятница, 29.03.2019, 21:18 |
Сообщение № 12

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Это да, но
1. Таблица небольшая
2. Если добавится еще штук 20 столбцов, то формулы со сцепками или произведениями придется соответственно на 20 элементов увеличивать, а мою нет.
Да и 6 произведений или сцепок массивов тоже скоростью не особо блещут, хотя, конечно, должны быть побыстрее МУМНОЖ. Но по-любому см. п.1

PIRATSTEN, п.4 Правил форума


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

PIRATSTEN

Дата: Пятница, 29.03.2019, 21:30 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

_Boroda_, усвоил. Вливаюсь.

 

Ответить

PIRATSTEN

Дата: Среда, 03.04.2019, 17:50 |
Сообщение № 14

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

UP.
Ребят, было неудобно снова писать сюда, т.к. Вы за меня мою задачу решили. Но оказывается я не верно понял человека. Мучаюсь третий день сам, но хоть убейте не могу реализовать.
Набор из 6 цифр который набирается пользователем ищется в любом порядке. Т.е. важен сам набор значений в 6ке. Если такие числа встречались в любом порядке в опред дату, то выводить дату. Уже уши горят. Спотыкаюсь на мелочах, то формула как текст вводится, то формат сбивается. Каждую функцию приходится изучать и отрабатывать, вспоминаю лабораторные работы в политехе.
Поможет кто? Файл тот же.

Сообщение отредактировал PIRATSTENСреда, 03.04.2019, 17:51

 

Ответить

Светлый

Дата: Среда, 03.04.2019, 20:16 |
Сообщение № 15

Группа: Друзья

Ранг: Старожил

Сообщений: 1742


Репутация:

479

±

Замечаний:
0% ±


Excel 2013, 2016

У меня только пока такой вариант. Формула массива:

Код

=МАКС((ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(«!»&J10:J225&»!»&K10:K225&»!»&L10:L225&»!»&M10:M225&»!»&N10:N225&»!»&O10:O225;»!»&J5;;1);»!»&K5;;1);»!»&L5;;1);»!»&M5;;1);»!»&N5;;1);»!»&O5;;1)=»»)*I10:I225)

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


Программировать проще, чем писать стихи.

Сообщение отредактировал СветлыйСреда, 03.04.2019, 20:19

 

Ответить

PIRATSTEN

Дата: Среда, 03.04.2019, 20:23 |
Сообщение № 16

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Фуууух. Почти победил. Остался последний шаг — вывести дату.
Способ квадратно-гнездовой. Но хотя бы факт наличия комбинации проверяется. Не знаю как он будет работать с огромным массивом данных. Скрещиваю пальцы.
Если интересно, то расскажу как я делаю.
1 шаг. Проверяю наличие первой позиции моего набора в первой строке статистики. Если это значение есть, то в первой ячейке напротив строки со статистикой я ставлю позицию на которой она нашлась. Если не нашлась, то ставится — 0. И так с каждым СВОИМ числом. Таким образом получаем набор значений от 0 до 5 (оказалось что и сравнивать нужно только первые 5).
Формула такая:

Цитата

=ЕСЛИОШИБКА(ПОИСКПОЗ(J$5; $J10:$O10; 0);0)


Далее я проверяю каждую строку из полученных наборов на наличие — 0. Если есть ноль, то ставится позиция на которой он находится, если не найден, то получается ошибка и при помощие ЕСЛИОШИБКА, мы исправляем на её на ноль. В итоге если у нас в какой-нибудь строчке есть ноль — Вуаля, совпадение с нашим набором есть.
Формула:

Цитата

=ЕСЛИОШИБКА(ПОИСКПОЗ(0;P10:T10; 0);0)

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

Цитата

=ЕСЛИ((ЕСЛИОШИБКА(ПОИСКПОЗ(0;U10:U225;0);»Нет совпадений»))<>»Нет совпадений»;»Найдено»;»Не найдено»)

Мне надо самому 5 раз её прочитать чтобы сориентироваться, но работает. ЕСЛИОШИБКА и ПОИСКПОЗ творят чудеса.
Осталось только научиться выделять номер строки в которой встретился ноль, чтобы сформировать координаты на ячейку с датой и вывести её (механизм же примерно такой?).
2 Светлый, спасибо! Пока я сам печатал, Вы уже ответили. Попробую это всяко лучше моего. Правда несколько совпадений исключено. Точнее маловероятно. Но это делу не мешает.

Светлый, Ошибка в значении и все тут.

Разобрался! Ctrl+Shift+Enter, массив же. И ячейку в формат даты нужно было перевести. Сначала не понял что за 45тыр на выходе. Спасибище!

Еще вопрос %) Как в случае если такого набора нет, вместо 00.01.1900 вывести «Совпадений нет». Лаконично в смысле. А то нагородить-то могу.

К сообщению приложен файл:

333.xlsx
(38.2 Kb)

Сообщение отредактировал PIRATSTENСреда, 03.04.2019, 20:41

 

Ответить

Светлый

Дата: Среда, 03.04.2019, 20:39 |
Сообщение № 17

Группа: Друзья

Ранг: Старожил

Сообщений: 1742


Репутация:

479

±

Замечаний:
0% ±


Excel 2013, 2016

Одновременное нажатие Ctrl+Shift+Enter
*И формат ячейки можно задать: ДД.ММ.ГГ;;Нет совпадения


Программировать проще, чем писать стихи.

Сообщение отредактировал СветлыйСреда, 03.04.2019, 20:54

 

Ответить

PIRATSTEN

Дата: Среда, 03.04.2019, 20:42 |
Сообщение № 18

Группа: Пользователи

Ранг: Новичок

Сообщений: 10


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Я чтобы не мультипостить в своем сообщении понаписал уже)

 

Ответить

Светлый

Дата: Среда, 03.04.2019, 20:56 |
Сообщение № 19

Группа: Друзья

Ранг: Старожил

Сообщений: 1742


Репутация:

479

±

Замечаний:
0% ±


Excel 2013, 2016

вместо 00.01.1900 вывести «Совпадений нет»

И формат ячейки можно задать: ДД.ММ.ГГ;;Нет совпадения


Программировать проще, чем писать стихи.

 

Ответить

Светлый

Дата: Среда, 03.04.2019, 21:42 |
Сообщение № 20

Группа: Друзья

Ранг: Старожил

Сообщений: 1742


Репутация:

479

±

Замечаний:
0% ±


Excel 2013, 2016

Нашёл ошибку в формуле. Новая формула:

Код

=МАКС((ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(«!»&J10:J225&»!!»&K10:K225&»!!»&L10:L225&»!!»&M10:M225&»!!»&N10:N225&»!!»&O10:O225&»!»;»!»&J5&»!»;;1);»!»&K5&»!»;;1);»!»&L5&»!»;;1);»!»&M5&»!»;;1);»!»&N5&»!»;;1);»!»&O5&»!»;;1)=»»)*I10:I225)


Программировать проще, чем писать стихи.

 

Ответить

87-0-сравнить два столца в excel лого

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

Использование условного оператора ЕСЛИ

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

Разместите оба столбца для сравнения в колонках A и B рабочего листа.

87-1-сравнение двух массивов

В ячейке С2 введите следующую формулу =ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(A2;$B$2:$B$11;0));»»;A2) и протяните ее до ячейки С11. Данная формула последовательно просматривает наличие каждого элемента из столбца A в столбце B и возвращает значение элемента, если оно было найдено в столбце B.

87-2-сравнение двух столбцов

Использование формулы подстановки ВПР

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

Чтобы сравнить два столбца с данными, находящимися в столбцах A и B(аналогично предыдущему способу), введите следующую формулу =ВПР(A2;$B$2:$B$11;1;0) в ячейку С2 и протяните ее до ячейки С11.

87-3-сравнение двух столбцов

Данная формула просматривает каждый элемент из основного массива в сравниваемом массиве и возвращает его значение, если оно было найдено в столбце B. В противном случае Excelвернет ошибку #Н/Д.

Использование макроса VBA

Использование макросов для сравнения двух столбцов позволяет унифицировать процесс и сократить время на подготовку данных. Решение о том, какой результат сравнения необходимо отобразить, полностью зависит от вашей фантазии и навыков владения макросами. Ниже представлена методика, опубликованная на официальном сайте Микрософт.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Sub Find_Matches()
Dim CompareRange As Variant, x As Variant, y As Variant
‘ Установка переменной CompareRangeравной сравниваемому диапазону
Set CompareRange = Range(«B1:B11»)
‘ Если сравниваемый диапазон находится на другом листе или книге,
‘ используйте следующий синтаксис
‘ Set CompareRange = Workbooks(«Книга2»). _
‘   Worksheets(«Лист2»).Range(«B1:B11»)

‘ Сравнение каждого элемента в выделенном диапазоне с каждым элементом
‘ переменной CompareRange
For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 2) = x
Next y
Next x
End Sub

В данном коде переменной CompareRange присваивается диапазон со сравниваемым массивом. Затем запускается цикл, который просматривает каждый элемент в выделенном диапазоне и сравнивает его с каждым элементом сравниваемого диапазона. Если были найдены элементы с одинаковыми значениями, макрос заносит значение элемента в столбец С.

Чтобы использовать макрос, вернитесь на рабочий лист, выделите основной диапазон (в нашем случае, это ячейки A1:A11), нажмите сочетание клавиш Alt+F8. В появившемся диалоговом окне выберите макрос Find_Matches и щелкните кнопку выполнить.

87-4-сравнение двух столбцов

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

87-5-сравнение двух столбцов

Использование надстройки Inquire

С запуском версии 2013, Excel обзавелась интересной надстройкой под названием Inquire, которая позволяет сравнивать и анализировать два файла Excel. Если вам необходимо сравнить две версии одного и того же файла, например, после создания книги, ваши коллеги внесли кое-какие изменения, и вам нужно определить что именно они изменили, воспользуйтесь инструментом WorkbookCompare надстройки Inquire. Подробнее о том, как устанавливать, запускать и использовать надстройку читайте в моей предыдущей статье про надстройку Inquire.

Итог

Итак, мы рассмотрели несколько способов сравнения данных в Excel, которые помогут вам решить некоторые аналитические задачи и упростят работу в поиске повтояющихся (или уникальных) значений.

Функция ПОИСКПОЗ в 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. Найти позицию первого частичного совпадения строки в диапазоне ячеек, хранящих текстовые значения.

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

Пример 1.

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

=ПОИСКПОЗ(D2&»*»;B:B;0)-1

Описание аргументов:

  • D2&»*» – искомое значение, состоящее и фамилии, указанной в ячейке B2, и любого количества других символов (“*”);
  • B:B – ссылка на столбец B:B, в котором выполняется поиск;
  • 0 – поиск точного совпадения.

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

Пример поиска:

ПОИСКПОЗ.

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

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

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

Пример 2.

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

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

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

сравнения значений.

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

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

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

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

Пример 3.

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

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

Результат расчетов:

поиск ближайшего большего значения.

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

Результат поиска:

поиск ближайшего меньшего.

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

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

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

Описание аргументов:

  • искомое_значение – обязательный аргумент, принимающий текстовые, числовые значения, а также данные логического и ссылочного типов, который используется в качестве критерия поиска (для сопоставления величин или нахождения точного совпадения);
  • просматриваемый_массив – обязательный аргумент, принимающий данные ссылочного типа (ссылки на диапазон ячеек) или константу массива, в которых выполняется поиск позиции элемента согласно критерию, заданному первым аргументом функции;
  • [тип_сопоставления] – необязательный для заполнения аргумент в виде числового значения, определяющего способ поиска в диапазоне ячеек или массиве. Может принимать следующие значения:
  1. -1 – поиск наименьшего ближайшего значения заданному аргументом искомое_значение в упорядоченном по убыванию массиве или диапазоне ячеек.
  2. 0 – (по умолчанию) поиск первого значения в массиве или диапазоне ячеек (не обязательно упорядоченном), которое полностью совпадает со значением, переданным в качестве первого аргумента.
  3. 1 – Поиск наибольшего ближайшего значения заданному первым аргументом в упорядоченном по возрастанию массиве или диапазоне ячеек.

Скачать примеры ПОИСКПОЗ для поиска совпадения значений в Excel

Примечания:

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

Колонки сравнивают для того, чтобы, например, в отчетах не было дубликатов. Или, наоборот, для проверки правильности заполнения — с поиском непохожих значений. И проще всего выполнять сравнение двух столбцов на совпадение в Excel — для этого есть 6 способов. 


Подпишитесь на наши каналы, чтобы не пропустить интересные новости и полезные статьи

1 Сравнение с помощью простого поиска 

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

  1. Перейти на главную вкладку табличного процессора. 
  2. В группе «Редактирование» выбрать пункт поиска. 
  3. Выделить столбец, в котором будет выполняться поиск совпадений — например, второй. 
  4. Вручную задавать значения из основного столбца (в данном случае — первого) и искать совпадения. 

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

  • Как работает округление чисел в Эксель: принципы и настройки

2 Операторы ЕСЛИ и СЧЕТЕСЛИ 

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

  1. Сравниваемые столбцы размещаются на одном листе. Не обязательно, чтобы они находились рядом друг с другом. 
  2. В третьем столбце, например, в ячейке J6, ввести формулу такого типа: =ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(H6;$I$6:$I$14;0));»;H6) 
  3. Протянуть формулу до конца столбца. 

Результатом станет появление в третьей колонке всех совпадающих значений. Причем H6 в примере — это первая ячейка одного из сравниваемых столбцов. А диапазон $I$6:$I$14 — все значения второй участвующей в сравнении колонки. Функция будет последовательно сравнивать данные и размещать только те из них, которые совпали. Однако выделения обнаруженных совпадений не происходит, поэтому методика подходит далеко не для всех ситуаций. 

Еще один способ предполагает поиск не просто дубликатов в разных колонках, но и их расположения в пределах одной строки. Для этого можно применить все тот же оператор ЕСЛИ, добавив к нему еще одну функцию Excel — И. Формула поиска дубликатов для данного примера будет следующей: =ЕСЛИ(И(H6=I6); «Совпадают»; «») — ее точно так же размещают в ячейке J6 и протягивают до самого низа проверяемого диапазона. При наличии совпадений появится указанная надпись (можно выбрать «Совпадают» или «Совпадение»), при отсутствии — будет выдаваться пустота. 

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

Она имеет вид =ЕСЛИ(СЧЕТЕСЛИ($H6:$J6;$H6)=3; «Совпадают»;») и должна размещаться в верхней части следующего столбца с протягиванием вниз. Однако в формулу добавляется еще количество сравниваемых колонок — в данном случае, три. 

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

3 Формула подстановки ВПР 

Принцип действия еще одной функции для поиска дубликатов напоминает первый способ использованием оператора ЕСЛИ. Но вместо ПОИСКПОЗ применяется ВПР, которую можно расшифровать как «Вертикальный Просмотр». Для сравнения двух столбцов из похожего примера следует ввести в верхнюю ячейку (J6) третьей колонки формулу =ВПР(H6;$I$6:$I$15;1;0) и протянуть ее в самый низ, до J15. 

С помощью этой функции не просто просматриваются и сравниваются повторяющиеся данные — результаты проверки устанавливаются четко напротив сравниваемого значения в первом столбце. Если программа не нашла совпадений, выдается #Н/Д. 

4 Функция СОВПАД 

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

  1. В третьем столбце, где будут размещаться результаты, вводится формула =ИЛИ(СОВПАД(I6;$H$6:$H$19)) 
  2. Вместо нажатия Enter нажимается комбинация клавиш Ctr + Shift + Enter. Результатом станет появление фигурных скобок слева и справа формулы. 
  3. Формула протягивается вниз, до конца сравниваемой колонки — в данном случае проверяется наличие данных из второго столбца в первом. Это позволит изменяться сравниваемому показателю, тогда как знак $ закрепляет диапазон, с которым выполняется сравнение. 

Результатом такого сравнения будет вывод уже не найденного совпадающего значения, а булевой переменной. В случае нахождения это будет «ИСТИНА». Если ни одного совпадения не было обнаружено — в ячейке появится надпись «ЛОЖЬ». 

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

  • Как в Экселе посчитать сумму определенных ячеек

5 Сравнение с выделением совпадений цветом 

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

Порядок действий для применения методики следующий: 

  1. Перейти на главную вкладку табличного процессора. 
  2. Выделить диапазон, в котором будут сравниваться столбцы. 
  3. Выбрать пункт условного форматирования. 
  4. Перейти к пункту «Правила выделения ячеек». 
  5. Выбрать «Повторяющиеся значения». 
  6. В открывшемся окне указать, как именно будут выделяться совпадения в первой и второй колонке. Например, красным текстом, если цвет остальных сообщений стандартный черный. Затем указать, что выделяться будут именно повторяющиеся ячейки. 

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

6 Надстройка Inquire 

Начиная с версий MS Excel 2013 табличный процессор позволяет воспользоваться еще одной методикой — специальной надстройкой Inquire. Она предназначена для того, чтобы сравнивать не колонки, а два файла .XLS или .XLSX в поисках не только совпадений, но и другой полезной информации. 

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

 
Процесс использования надстройки включает такие действия: 

  1. Перейти к параметрам электронной таблицы. 
  2. Выбрать сначала надстройки, а затем управление надстройками COM. 
  3. Отметить пункт Inquire и нажать «ОК». 
  4. Перейти к вкладке Inquire. 
  5. Нажать на кнопку Compare Files, указать, какие именно файлы будут сравниваться, и выбрать Compare. 
  6. В открывшемся окне провести сравнения, используя показанные совпадения и различия между данными в столбцах. 

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

Читайте также:

  • 5 программ для совместной работы с документами
  • Как в Экселе протянуть формулу по строке или столбцу: 5 способов

Понравилась статья? Поделить с друзьями:
  • Сравнение числа в столбце excel
  • Сравнение чисел в ячейках excel
  • Сравнение чисел в таблице excel
  • Сравнение чисел в excel больше
  • Сравнение чисел vba excel