Вопрос или проблема
Я пытаюсь сделать следующее. У меня есть Лист 1 и Лист 2.
На третьем листе мне нужно получить строки из листа 1, где ИНСТРУМЕНТ листа 1 не найден в ФИМ листа 2 (например, так как ни один из ИНСТРУМЕНТОВ листа 1 не находится в ФИМ листа 2, лист 3 будет содержать строки листа 1). Как я могу это сделать? Спасибо
Функции поиска, такие как VLOOKUP()
, можно использовать для поиска значения и, следовательно, возврата какого-либо результата, или для его отсутствия, и, следовательно, возврата #ERROR!. Очевидно, это обычно используется в “положительном” смысле, чтобы найти какой-либо результат, но его также можно использовать в “отрицательном” смысле, чтобы не искать какой-либо результат, а скорее искать #ERROR!.
Также можно проверить наличие #ERROR! с помощью функции ISERROR()
. Иногда можно использовать IFERROR()
, но многие ситуации не позволяют использовать механизм IFERROR()
, и это одна из них. Здесь будет использована ISERROR()
как более сложный NOT()
. Тогда, если ИНСТРУМЕНТ не найден, тест IF()
будет успешен, так как он ищет такой сбой. TRUE-результат в этом случае – это значение ячейки поиска. Если тест не проходит (ИНСТРУМЕНТ существует там), возвращается “”.
Следующая формула делает это:
=IF(ISERROR(VLOOKUP(A2:A9,$F$2:$F$5,1,FALSE)),A2:A9,"")
Если у вас есть функция SPILL
, то только первая ячейка нуждается в формуле. Если нет, вставьте ее в первую ячейку и используйте {CSE}, чтобы выполнить старый метод создания массива.
Обратите внимание, что формула будет выдавать результаты в разных частях диапазона вывода. Для их группировки вам нужно отсортировать их так, чтобы пустые оказались внизу списка, чтобы они не мешали ни легкому использованию списка, ни его внешнему виду, что может быть более важно для вас.
Тем не менее, практически всё, что вы используете для тех, что существуют, как “” в формуле выше, или даже символ, который имеет гораздо больший вес, как UNICODE(160)
, который является пробелом, все равно будет сортироваться в начале списка. Вы можете подойти к этому многими способами, включая копирование, затем вставку как значения, затем сортировку, но чтобы сделать это с помощью формулы, чтобы вам не нужно было взаимодействовать, вы можете попробовать что-то вроде следующего:
=SUBSTITUTE(SORT(IF(ISERROR(VLOOKUP(A2:A9,$F$2:$F$5,1,FALSE)),A2:A9,"ZZZZZZZZZZ")),"ZZZZZZZZZZ","")
Вы используете строку символов, которая всегда должна сортироваться в конец вашего списка. “ZZZZZZZZZZ” используется в этой формуле. Затем вы SORT()
, чтобы заставить все это оказаться в конце, а те, что вы хотите видеть первыми – наверху. Затем вы SUBSTITUTE()
для этой строки на пустую, как “”, и все эти “исчезают”… Но на самом деле не исчезают, а лишь визуально.
(Очевидно, вы должны использовать реальные ссылки в формуле, которую выберете или адаптируете.)
Ответ или решение
Для того чтобы получить строки из одного листа, информация в которых не совпадает с данными из другого листа в Excel, вам необходимо использовать комбинацию функций, таких как VLOOKUP
, ISERROR
, а также дополнительные функции для сортировки и замены в случае необходимости.
Предположим, у вас есть два листа:
- Sheet 1 — содержит столбец с наименованиями инструментов.
- Sheet 2 — содержит столбец с наименованиями ФИМов (факторов инвестиционного менеджмента).
Наша цель — извлечь строки из Sheet 1, значения которых отсутствуют в соответствующем столбце Sheet 2.
Шаги для выполнения задачи
-
Использование функции VLOOKUP и ISERROR:
Вначале мы будем использовать функциюVLOOKUP
для поиска значений. В сочетании сISERROR
мы сможем определить, нет ли соответствия для каждого из инструментов.Например, если ваши данные находятся в диапазонах A2:A9 (Sheet 1) и F2:F5 (Sheet 2), введите следующую формулу в первую ячейку (например, на Sheet 3, в ячейку A2):
=IF(ISERROR(VLOOKUP(A2, $F$2:$F$5, 1, FALSE)), A2, "")
Эта формула проверяет наличие значения из A2 в диапазоне F2:F5. Если значение не найдено, она возвращает это значение, иначе возвращает пустую строку.
-
Применение множественной формулы:
Если вы используете Excel с функцией массивов (например, начиная с Excel 365), вы можете просто ввести формулу в A2, и данные автоматически "зальются" в другие ячейки. Если таковой функционал отсутствует, после ввода формулы используйте комбинацию клавиш CTRL + SHIFT + ENTER для создания массива формул. -
Сортировка и удаление пустых строк:
Чтобы убрать пустые строки в результате, можно использовать функциюSORT
вместе сSUBSTITUTE
. Вот пример того, как можно это сделать:=SUBSTITUTE(SORT(IF(ISERROR(VLOOKUP(A2:A9, $F$2:$F$5, 1, FALSE)), A2:A9, "ZZZZZZZZZZ")), "ZZZZZZZZZZ", "")
В этом примере мы используем строку "ZZZZZZZZZZ", которая по логике всегда будет находиться в конце сортировки. После сортировки мы заменяем все вхождения этой строки на пустую строку, очищая ваш конечный результат.
Результат
После выполнения этих шагов на третьем листе у вас будет список инструментов, которые отсутствуют в FIM на втором листе, аккуратно отфильтрованных и отсортированных.
Примечания
- Убедитесь, что диапазоны, которые вы используете в формулах, соответствуют вашим данным.
- Помните, что использование
VLOOKUP
требует, чтобы весь массив данных выглядел корректно; возможно, будет полезно удалить дубликаты или очистить данные от лишних пробелов перед анализом.
С помощью приведенных рекомендаций вы сможете эффективно получить нужный вам результат.