Повторяющиеся строки в столбцах MS Excel и как с ними бороться. Как в экселе выделить повторяющиеся значения Excel удалить дубликаты в столбце

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

В этой статье рассмотрим задачу удаления дублирующих строк в таблице БД. Сразу же отмечу, что речь идет о необходимости удалить именно повторяющиеся строки. Например, записи в таблице заказов с полями "код заказа", "код товара", "код покупателя", "дата заказа" могут различаться только кодом заказа, так как все же один покупатель в один день может заказать один и тот же товар несколько раз. А главный показатель здесь, что все правильно – наличие ключевого поля.

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

Пример явно избыточной таблицы:

Теперь рассмотрим, как можно решить эту проблему. Здесь можно применить несколько методов.


1. Можно написать функцию для сравнения и перебора всех данных. Это долго, да и писать код для одноразового использования не всегда хочется.


2. Другое решение – создать запрос на выборку с группировкой данных, так чтобы получить только уникальные строки:

SELECT country_id, city_name
FROM mytable
GROUP BY country_id, city_name

Получаем следующую выборку:

Затем, полученный набор данных записываем в другую таблицу.


3. В указанных решениях применяется дополнительный программный код или дополнительные таблицы. Однако, было бы удобней сделать все, используя только запросы SQL без дополнительных таблиц. И вот пример такого решения:

DELETE a.* FROM mytable a,
(SELECT

FROM mytable b

) c
WHERE
a.country_id = c.country_id
AND a.city_name = c.city_name
AND a.id > c.mid

После выполнения такого запроса в таблице останутся только уникальные записи:

Теперь разберемся подробнее, как все это работает. При запросе на удаление, необходимо задать условие, которое укажет какие данные нужно удалить, а какие оставить. Нам необходимо удалить все не уникальные записи. Т.е. если существует несколько одинаковых записей (одинаковые они, если у них равны значения country_id и city_name), то нужно взять одну из строк, запомнить ее код и удалить все записи с такими же значениями country_id и city_name, но другим кодом (id).

Строка SQL запроса:

DELETE a.* FROM mytable a,

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

Затем запрос на выборку формирует вспомогательную таблицу, где мы группируем записи так, чтобы все записи были уникальными:

(SELECT
b.country_id, b.city_name, MIN(b.id) mid
FROM mytable b
GROUP BY b.country_id, b.city_name
) c

MIN(b.id) mid – формирует столбец mid (сокращение min id), в который вносятся минимальное значение id, в каждой подгруппе.

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

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

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


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

ALTER TABLE ` mytable` ADD `id` INT(11) NOT NULL AUTO_INCREMENT , ADD PRIMARY KEY (`id`)

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

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

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

Сведения о фильтрации уникальных значений и удалении повторяющихся значений

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

Повторяющееся значение - это одно из значений, для которого все значения по крайней мере одной строки идентичны всем значениям в другой строке. Сравнение повторяющихся значений зависит от того, что отображается в ячейке, а не на основе значения, хранящегося в ячейке. Например, если у вас есть одинаковое значение даты в разных ячейках, например "3/8/2006", а другое - "Мар 8, 2006", значения будут уникальными.

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

Фильтрация уникальных значений

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

    Нажмите кнопку Фильтровать список на месте .

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

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

Удаление повторяющихся значений

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

Выполните указанные ниже действия.

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

Невозможно удалить повторяющиеся значения из структурированных данных структуры или с промежуточными итогами. Для удаления дубликатов необходимо удалить структуру и промежуточные итоги. Дополнительные сведения можно найти в разделе Структурирование списка данных на листе и Удаление промежуточных итогов .

Условное форматирование уникальных и повторяющихся значений

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

Быстрое форматирование

Выполните указанные ниже действия.


Расширенное форматирование

Выполните указанные ниже действия.

В Excel в Интернете вы можете удалить повторяющиеся значения.

Удаление повторяющихся значений

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

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

Выполните указанные ниже действия.

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

    На вкладке данные нажмите кнопку Удалить дубликаты .

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

    Примечание: Данные будут удалены из всех столбцов, даже если на этом этапе не будут выделяться все столбцы. Например, если выбрать Столбец1 и Столбец2 (но не Столбец3), то "Key", использованный для поиска дубликатов, - это значение обоих Столбец1 & Столбец2. При обнаружении дубликата в Столбец1 и Столбец2 вся строка будет удалена, включая данные из Столбец3.

Мы все знаем, что большие наборы данных лучше всего сохранять в электронных таблицах, т.к тогда мы обеспечены замечательным инструментом обработки информации. Рассмотрим, как можно исключить повторяющуюся в строках информацию. В файлах MS Excel дубликаты встречаются тогда, когда мы создаем составную таблицу из других таблиц, или когда разные пользователи работают с одним файлом, наполняя таблицу однотипной информацией. MS Excel предлагает несколько вариантов исключения или выявления повторяющейся информации, а именно: поиск, выделение и, при необходимости, удаление повторяющихся значений. Рассмотрим подробно каждое из действий на примере MS Excel 2007.

1. Удаление повторяющихся значений в Excel

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

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

ИТОГ: Данная функция предназначена для удаления записей, которые полностью дублируют строки в таблице.

2. Расширенный (дополнительный) фильтр для удаления дубликатов

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

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

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

3. Условное форматирование в Excel

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

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

ИТОГ: Для больших массивов информации данный метод не дает четкой картины. Все фамилии авторов книг, у которых есть повторения, выделены одинаковым цветом.

4. Сводные таблицы для определения повторяющихся значений

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

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

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

Материал подготовлен Л.А. Шутилиной, методистом ГМЦ ДОгМ

Давним пунктом в списке пожеланий к Excel была возможность автоматического удаления дубликатов строк в листе. И вот, начиная с Excel 2007, разработчики Microsoft исполнили это желание.

На рис. 33.1 показан диапазон данных, после того как он был преобразован в таблицу с помощью команды Вставка Таблицы Таблица . Обратите внимание, что эта таблица содержит некоторые повторяющиеся строки.

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

Если ваши данные введены не в виде таблицы, используйте команду Данные Работа с данными Удалить дубликаты для отображения одноименного диалогового окна.

Следует понимать, что повторяющиеся значения определяются значением, отображаемым в ячейке, а это необязательно значение, хранящееся в ячейке. Предположим, две ячейки содержат одну и ту же дату: одна дата форматируется как 5/15/2010, а другая - как Май 15, 2010. При удалении дубликатов Excel посчитает, что эти строки различные.

Нажмите кнопку OK , и Excel отсеет повторяющиеся строки и выведет сообщение о том, как много дубликатов он удалил (рис. 33.3).

Работая с Microsoft Excel очень часто возникает ситуация, когда необходимо удалить повторяющиеся строки. Этот процесс может превратиться в бессмысленную, монотонную и трудоемкую работу, однако, существует ряд способов упростить задачу. Сегодня мы разберем несколько удобных методов нахождения и удаления повторяющихся строк в Excel. В качестве примера возьмем следующую таблицу с данными:

Вариант 1: Команда Удалить дубликаты в Excel

Microsoft Excel располагает встроенным инструментом, который позволяет находить и удалять дубликаты строк. Начнем с поиска повторяющихся строк. Для этого выберите любую ячейку в таблице, а затем выделите всю таблицу, нажав Ctrl+A .

Перейдите на вкладку Date (Данные), а затем нажмите команду Remove Duplicates (Удалить дубликаты), как показано ниже.

Появится небольшое диалоговое окно Remove Duplicates (Удалить дубликаты). Можно заметить, что выделение первой строки снимается автоматически. Причиной тому является флажок, установленный в пункте My data has headers (Мои данные содержат заголовки).

В нашем примере нет заголовков, поскольку таблица начинается с 1-й строки. Поэтому снимем флажок. Сделав это, Вы заметите, что вся таблица снова выделена, а раздел Columns (Колонны) изменится с dulpicate на Column A , B и С .

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

Вариант 2: Расширенный фильтр

Вторым инструментом Excel, с помощью которого можно найти и удалить дубликаты, является Расширенный фильтр . Этот метод также применим к Excel 2003. Чтобы применить фильтр, необходимо выделить всю таблицу, как и прежде, воспользовавшись сочетанием клавиш Ctrl+A .

Затем перейдите на вкладку Data (Данные), в группе команд Sort & Filter (Сортировка и фильтр) нажмите команду Advanced (Дополнительно), как показано ниже. Если Вы используете Excel 2003, вызовите раскрывающееся меню Data (Данные), выберите Filters (Фильтры), а затем Advanced Filters (Расширенные фильтры).

Теперь необходимо установить флажок Unique records only (Только уникальные записи).

После нажатия OK в документе будут удалены все дубликаты, за исключением одной записи. В нашем примере осталось две записи, поскольку первый дубликат был обнаружен в строке 1. Этот метод автоматически определяет заголовки в таблице. Если Вы хотите удалить первую строку, Вам придется удалить ее вручную. Когда в 1-й строке будут заголовки, а не дубликаты, останется только одна копия существующих повторов.

Вариант 3: Замена

Этот метод удобно применять, когда необходимо найти повторяющиеся строки в небольших таблицах. Мы будем использовать инструмент Find and Replace (Поиск и замена), который встроен во все продукты Microsoft Office. Для начала необходимо открыть таблицу Excel, с которой планируется работать.

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

Скопировав слово, которое необходимо найти, воспользуйтесь сочетанием Ctrl+H , чтобы вызвать диалоговое окно Find and Replace (Поиск и замена). Вставьте скопированное слово с поле Найти , нажав Ctrl+V .

Нажмите кнопку Options (Параметры), чтобы открыть дополнительный список опций. Установите флажок у пункта Match entire cell contents (Ячейка целиком). Это необходимо сделать, поскольку в некоторых ячейках искомые слова находятся вместе с другими словами. Если не выбрать эту опцию, можно непреднамеренно удалить ячейки, которые требуется оставить. Убедитесь, что все остальные настройки соответствуют указанным на рисунке ниже.

Теперь необходимо ввести значение в поле Replace with (Заменить на). В данном примере мы воспользуемся цифрой 1 . Введя нужное значение, нажмите Replace All (Заменить все).

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

Чтобы оставить один из дубликатов, достаточно вставить исходный текст обратно в строку, которая была заменена. В нашем случае мы восстановим значения в 1-й строке таблицы.

Определив строки с повторяющимся содержимым, поочередно выделите их, удерживая клавишу Ctrl .

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

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