25 подписчиков

Повторяющиеся значения в гугл таблицах [Решено]

1,1K прочитали

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

  • 1-й вариант выделения повторяющихся значений через условное форматирование;
  • 2-й вариант с использованием Apps Script;
  • 3-й вариант с использованием дополнительных полей + условное форматирование.

Для тех кому лень читать, или в процессе статьи будут вопросы - вы можете посмотреть данное обучающее видео:

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

Алгоритм выделения повторных значений достаточно прост

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

2. Применяем к выбранному диапазону условное форматирование:

Формат -> Условное форматирование
Добрый день, друзья и гости моего канала. Сегодня мы разберём с вами задачу по выделению повторяющихся значений в Google.Таблицах.-2

3. В появившемся справа блоке "Правила условного форматирования" создаём новое правило:

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

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

4. Настраиваем правило условного форматирования

Еще раз проверьте диапазон к которому будут применяться правила, если вам надо применить правило только к одной колонке до конца, вы можете указать диапазон A2:A (при условии, что в ячейке A1 расположена шапка таблицы).

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

5. Формулы Гугл.Таблиц для выделения повторяющихся значений:

=COUNTIF(A:A;A1>1)
в русском варианте
=СЧЁТЕСЛИ(A:A;A1>1)

в примере выше формула будет проверять значения по колонкам, повторы в рамках колонки A, B и т.д. в выбранном диапазоне.

Для проверки всех ячеек разом из диапазона, необходимо формулу чуть изменить:

=COUNTIF(A:H;A1>1)
в русском варианте:
=СЧЁТЕСЛИ(A:H;A1>1)

В примере выше данные будут проверяться разом в диапазоне данных начиная с колонки A до колонки H.

В Интернете также есть более старая формула, которая также очень хорошо работает, чаще всего я использую именно её:

=AND(NOT(ISBLANK(A1)); COUNTIF($A$1:$A; "=" & A1) > 1)
в русском варианте:
=И(НЕ(ЕПУСТО(A1)); СЧЁТЕСЛИ($A$1:$A; "=" & A1) > 1)

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

=AND(NOT(ISBLANK(F1)); COUNTIF($F$1:$F; "=" & F1) > 1)
в русском варианте:
=И(НЕ(ЕПУСТО(F1)); СЧЁТЕСЛИ($F$1:$F; "=" & F1) > 1)

либо в диапазоне от B до G:

=AND(NOT(ISBLANK(B1)); COUNTIF($B$1:$G; "=" & B1) > 1)
в русском варианте:
=И(НЕ(ЕПУСТО(B1)); СЧЁТЕСЛИ($B$1:$G; "=" & B1) > 1)

Условное форматирование имеет ограничения работы в рамках одного листа, в случае если вы будете ссылаться на диапазон данных из другого листа (или другой Гугл.Таблицы) у вас высветится уведомление об ошибки:

Вариант 2 и 3 предлагает решения, как обойти данную ошибку.
Вариант 2 и 3 предлагает решения, как обойти данную ошибку.

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

Повторяющееся значения в Google.Таблицах на разных листах

В этом варианте мы будем использовать Apps Script. Для этого необходимо зайти в Расширения -> Apps Script.

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

В поле для ввода кода Apps Script вместо стартовой заготовки вставляем следующий код:

function onEdit(e) {
// Получаем активную таблицу
var activeSpreadsheet = e.source;
// Получаем лист, в котором произошли изменения
var editedSheet = e.range.getSheet();
// Проверяем, что изменения произошли на "1 Вариант II" или "2 Вариант II"
if (editedSheet.getName() == "1 Вариант II" || editedSheet.getName() == "2 Вариант II") {
// Получаем данные из колонки A на "2 Вариант II"
var sheet2 = activeSpreadsheet.getSheetByName("2 Вариант II");
var columnADataSheet3 = sheet2.getRange("A:A").getValues().flat();
// Получаем данные из колонки A на "1 Вариант II"
var sheet1 = activeSpreadsheet.getSheetByName("1 Вариант II");
var range = sheet1.getRange("A:A");
var columnADataSheet1 = range.getValues();
// Итерируем по значениям колонки A на "1 Вариант II"
for (var i = 0; i < columnADataSheet1.length; i++) {
// Получаем значение ячейки
var enteredValue = columnADataSheet1[i][0];
// Получаем объект ячейки
var cell = range.getCell(i + 1, 1);
// Проверяем, что значение не пустое
if (enteredValue !== "") {
// Проверяем, есть ли такое значение в колонке A "2 Вариант II"
if (columnADataSheet3.indexOf(enteredValue) !== -1) {
// Если значение найдено, устанавливаем цвет фона ячейки
cell.setBackground("#b7e1cd"); //можете поменять цвет бекграунда на свой
//cell.setFontColor("#ffa500"); //измененице цвета шрифта
} else {
// Если значение не найдено, сбрасываем цвет фона ячейки
cell.setBackground(null);
//cell.setFontColor(null); //обнуление цвета шрифта
}
}else{
// Если значение стало пустым, сбрасываем цвет фона ячейки
cell.setBackground(null);
//cell.setFontColor(null); //обнуление цвета шрифта
}
}
}
}
Ниже будут комментарии по коду Apps Script для выделения повторяющихся значений
Ниже будут комментарии по коду Apps Script для выделения повторяющихся значений

Комментарии по коду:

1. Данный код работает с листом под названием "1 Вариант II" и "2 Вариант II", где на листе "2 Вариант II" указаны значения, которые будут проверяться на совпадения с данными, которые будут указаны на листе "1 Вариант II". В ваших таблицах названия листов могут быть другие, соответственно в формуле выше вам необходимо будет поставить ваши названия листов (выделено жёлтым в коде выше). Вы также можете изменить цвет бэкграунда или шрифта (цвет шрифта закомментирован через "//", чтобы он работал уберите комментарии).

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

В вашем случае колонка (или колноки) могут быть другие. Для изменения колонки с проверочными данными вам необходим изменить диапазон "A:A" в части кода, подчеркнутого фиолетовым на скриншоте ниже

Для изменения колонки с данными, дубли которых необходимо будет подсвечивать, вам необходимо изменить диапазон "A:A" в части кода, подчеркнутого зелёным на скриншоте ниже.

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

3. Данный код не претендует на звание лучшего, однако, он рабочий. При первом запуске потребуется разрешение на применение скрипта Apps Script. Скрипт срабатывает каждый раз при изменении данных в таблице (на лету). После внесения изменения в код не забывайте его сохранить:

Не забывайте сохранить свой скрипт после изменений!
Не забывайте сохранить свой скрипт после изменений!

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

В моей статье "Зависимые выпадающие списки в Google таблицах" подробно рассматривается как предоставить разрешение к Apps Script.

Зависимые выпадающие списки в Google таблицах
Life report by Aleks Ku5 июня 2023

Вопросы по скрипту можно задать здесь, в Дзене (в Дзене могу отвечать не очень оперативно) или в ВК: https://vk.com/aleks_ku или в Телеграм https://t.me/Aleks32Ku

Повторяющееся значения в Google.Таблицах на разных листах еще один вариант

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

В соседнюю колонку вставляется формула, и протягивается вниз:

=IF(A2="";"";COUNTIF('2 Вариант III'!$A$2:$A;A2))
в русском варианте:
=ЕСЛИ(A2="";"";СЧЁТЕСЛИ('2 Вариант III'!$A$2:$A;A2))
Добрый день, друзья и гости моего канала. Сегодня мы разберём с вами задачу по выделению повторяющихся значений в Google.Таблицах.-10

Формула выше построчно проверяет ваши данные из колонки A и подсчитывает их количество на листе "2 Вариант III" в диапазоне от $A$2 до конца колонки A. В вашем случае лист будет называться по другому, в формуле необходимо будет вписать название вашего листа и ваш диапазон. В случае обнаружения совпадений возвращает количество данных совпадений. Нас интересует любое не нулевое значение.

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

Выбираем колонку, к которой необходимо будет применить условное форматирование и создаем новое правило (см. вариант 1, там рассказано как добавить правило). В поле "Ваша формула" вставляем следующий вариант:

=AND(NOT(ISBLANK(A1));B1>=1)
в русском варианте:
=И(НЕ(ЕПУСТО(A1));B1>=1)

В видео указан старый вариант формулы, который не учитывал момент, что число повторов в проверочных данных может быть более 1. Формула выше - более устойчива к вносимых данным.

=B1=1 - старый вариант формулы из видео, не совсем верный.

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

=AND(NOT(ISBLANK(H1));O1>=1)
в русском варианте:
=И(НЕ(ЕПУСТО(H1));O1>=1)

Из особенностей: формулу надо вручную протягивать по всем данным, если формулу не протянуть - условное форматирование к данным не применится. Как я уже говорил в видео можно повесить обработчик Apps Script, который будет на лету добавлять формулу в проверочную колонку, в случае наличия данных в проверяемой колонке\диапазоне.

Все разобранные выше примеры доступны по ссылке https://docs.google.com/spreadsheets/d/1XC146hgbPyAINbQKo_aRcyBch9dxm4VQ7Eix7AbCD04/edit#gid=781545522

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