Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

25 Февраль 2021, 16:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: [Tips&Tricks] Отбор из таблицы по условию "не входит в другую таблицу"  (Прочитано 4043 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Стартовое сообщение: 21 Май 2013, 11:31 »

Итак, условие задачи.
Есть два списка значений. Нужно из первого списка отобрать ячейки со значениями, которые НЕ попали во второй список.
Обычно это делается с помощью вспомогательного столбца, в котором с помощью формул вида
Код:
=COUNTIF(<второй список>;<проверяемое значение>)>0
или
Код:
=ISERROR(VLOOKUP(<проверяемое значение>;<второй список>;1;0))
или
Код:
=ISERROR(MATCH(<проверяемое значение>;<второй список>;0))
выясняется, встречается ли очередное значение первого списка во втором. Вариантов таких формул масса, но общий смысл сводится к одному — получить значение ИСТИНА или ЛОЖЬ, по которому затем список будет отфильтрован.

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

Реже некоторые энтузиасты Base предлагают импортировать оба списка в базу данных и одним SELECT'ом получить результат.

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

Шаг 1. Преобразовать данные второго списка (фильтра) в строки с дописанным оператором сравнения "не равно". Для этого используется формула
Код:
= TRANSPOSE ( "<>" & <второй список>)
Ввод этой формулы нужно завершить нажатием Ctrl+Shift+Enter, чтобы получить «формулу массива»

Шаг 2. Повторить заголовок первого списка (столбца сортируемых данных) для каждой ячейки в строке условий

Шаг 3. Применить расширенный фильтр

Смотрите приложенный анимированный GIF

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

[вложение удалено Администратором]
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!