Як виділити клітинку, якщо значення дублюється у тому ж стовпці для електронної таблиці Google?


270

Я шукаю формулу для підсвічування комірки електронної таблиці Google, якщо значення дублюється в одному стовпці

може хто-небудь, будь ласка, допомогти мені у цьому запиті?

Відповіді:


473

Спробуйте це:

  1. Виберіть весь стовпець
  2. Клацніть Формат
  3. Клацніть Умовне форматування
  4. Клацніть Додати інше правило (або відредагуйте існуюче / за замовчуванням)
  5. Встановіть формати комірок, якщо :Custom formula is
  6. Встановіть значення: =countif(A:A,A1)>1(або змінити Aвибраний стовпець)
  7. Встановіть стиль форматування.
  8. Переконайтеся, що діапазон застосовується до вашого стовпця (наприклад, A1:A100).
  9. Клацніть Готово

Все, що написано в клітинках A1: A100, буде перевірено, і якщо є дублікат (зустрічається більше одного разу), він буде кольоровим.

Для локалів, що використовують коми ( ,) в якості десяткового роздільника, роздільник аргументів, швидше за все, є крапкою з комою ( ;). Тобто спробуйте:, =countif(A:A;A1)>1замість цього.

Для кількох стовпців використовуйте countifs.


50
З нових таблиць Google ви можете використовувати багатоколонну версію COUNTIFS. Використовуйте так, якщо дублікати є комбінацією з більше стовпців=COUNTIFS(A:A; A1; B:B; B1)>1
— Крістіан Вестербек,

6
закінчення ;призводить до помилки "невірної формули" для мене. Просто вилучивши це зробило свою справу. Також будьте обережні: клітина, яку ви вказали як другий аргумент, countifповинна бути першою коміркою вибраного діапазону.
— еделани

11
Це працює. Але чому? Якщо припустити, що А1 є критерієм рівняння, чи не ця формула порівнює всі комірки в діапазоні з А1?
— mafonya

9
@mafonya, спеціальна формула - це загальна формула, яку слід читати як прикладну до першої комірки. Всі посилання будуть адаптовані для кожної комірки у вибраному діапазоні. Так, наприклад, при перевірці комірки B2 формула стане внутрішньою =countif(B:B,B2)>1. Це дозволяє зробити досить розширене форматування при використанні абсолютних відносних посилань на комірки.
— asoundmove

14
Як бічна примітка, якщо ви хочете застосувати його до всього стовпця, ви можете використовувати формулу = countif (A: A, A: A)> 1 Це означає, що він не буде застосовуватися просто до клітинки A1, а буде A4 і A8, якщо вони однакові (дублікат). Тепер буде форматовано і формат A4, і A8.
— BBking

68

Хоча відповідь Золлі цілком підходить для питання, ось більш загальне рішення для будь-якого діапазону, а також пояснення:

    =COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1

Зверніть увагу, що в цьому прикладі я буду використовувати діапазон A1:C50. Перший параметр ( $A$1:$C$50) слід замінити діапазоном, у якому ви хочете виділити дублікати!


для виділення дублікатів:

  1. Виберіть весь діапазон, на якому потрібно шукати повторне маркування.
  2. У меню: Format>Conditional formatting...
  3. У розділі Apply to rangeВиберіть діапазон, до якого має застосовуватися правило.
  4. В Format cells if, виберіть Custom formula isу спадному меню.
  5. У текстове поле вставити задану формулу, регулюючи діапазон відповідно до кроку (3).

Чому це працює?

COUNTIF(range, criterion), порівнюватиме кожну клітинку в rangeта criterion, яка обробляється аналогічно формулам. Якщо не передбачено спеціальних операторів, він порівнює кожну клітинку в діапазоні із заданою коміркою та поверне кількість комірок, які виявили, що відповідають правилу (у цьому випадку порівняння). Ми використовуємо фіксований діапазон (із $знаками), щоб ми завжди переглядали весь діапазон.

Другий блок, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))поверне вміст поточної комірки. Якщо це було розміщено всередині комірки, документи будуть кричати про кругову залежність, але в цьому випадку формула оцінюється так, ніби вона була в клітині, не змінюючи її.

ROW()і COLUMN()повертає рядок номер і стовпець номер даного осередку відповідно. Якщо не вказано жодного параметра, поточна комірка буде повернута (це на основі 1, наприклад, B3поверне 3 для ROW(), а 2 для COLUMN()).

Тоді ми використовуємо: ADDRESS(row, column, [absolute_relative_mode])для перекладу числового рядка та стовпця до посилання на клітинку (наприклад B3. Пам'ятайте, що ми знаходимось у контексті клітини, ми не знаємо, що це вміст адреси АБО, і нам потрібен вміст для порівняння). Третій параметр піклується про форматування та 4повертає формати INDIRECT()подобається.

INDIRECT(), візьме посилання на клітинку і поверне її вміст. У цьому випадку вміст поточної комірки. Потім повернемося до початку, COUNTIF()перевіримо кожну клітинку в діапазоні проти нашої та поверне кількість.

Останній крок робить наша формула повертає логічне значення, зробивши це логічний вираз: COUNTIF(...) > 1. > 1Використовується , тому що ми знаємо , що є принаймні одна клітина ідентична нашій. Ось наша клітина, яка знаходиться в діапазоні, і таким чином буде порівнюватися з самою собою. Тому для позначення дубліката нам потрібно знайти 2 або більше комірок, що відповідають нашій.


Джерела:

  • Довідка для редакторів документів: COUNTIF ()
  • Довідка для редакторів документів: INDIRECT ()
  • Довідка редакторів документів: ADDRESS ()
  • Довідка для редакторів документів: ROW ()
  • Довідка для редакторів документів: COLUMN ()

4
На жаль, це не працює для мене. Він не може виділити нічого взагалі, незважаючи на те, що було багато дублів. Не знаю чому, це звучить як приємне рішення.
— JVC

Це працює для мене, але також виділяє порожні клітинки. Чи є спосіб виключити пробіли?
— gillespieza

1
@Amanda - Так, трохи творчості і це можливо. Я тиждень в АФК, але спіймайте мене через тиждень. І півтора, і я з радістю допоможу. Ідея полягає у створенні оператора AND (за допомогою *) та іншої перевірки, відповідно до рядків ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...))))). Це найкраще, що я можу зробити на мобільному телефоні. :)
— Егоїст

2
Саме це і є необхідне рішення. Це просто працює як HASHMAP для виявлення дублікатів.
— АК

1
Працює чарівно, дякую @Selfish! Економив мені час. Примітка: змінити лише те, що потрібно змінити $A$1:$C$50- відповідно до розглянутих стовпців. Мені подобається цей загальний підхід більше, ніж zolley.
— болдник

28

Відповідь @zolley правильна. Просто додавання Gif та кроки для посилання.

  1. Перейти до меню Format > Conditional formatting..
  2. Знайдіть Format cells if..
  3. Додати =countif(A:A,A1)>1в полеCustom formula is
    • Примітка: Змініть лист Aу власному стовпчику.

введіть тут опис зображення


2
Як я можу відфільтрувати їх за кольором після виділення дублікатів?
— Файсал

@Faisal лише зі сценарієм або аддоном
— player0

27

У спадному меню "Текст містить" виберіть "Спеціальна формула:", і напишіть: "= counttif (A: A, A1)> 1" (без лапок)

Я зробив саме так, як запропонував zolley , але слід зробити невелику корекцію: використовуйте "Спеціальна формула" замість "Текст містить" . І тоді умовна візуалізація спрацює.

Знімок екрана з меню


1
Я не відповідав вам (я щойно знайшов це питання сьогодні), але ось коментар до вашої відповіді, як ви просили. Я не думаю, що крапка з комою є необхідною у формулі. Крім того, я все ще бачу спадне меню на панелі умовного форматування на листах google. Принаймні, я натискаю на варіант вибору, і з’являється довгий набір варіантів, який я б, як правило, назвав випадаюче меню. Опція, яка спочатку з’являється у спадному меню, часто Text Contains, так що саме користувач зазвичай натискає, щоб отримати доступ до спадного меню.
— Пол де Баррос

Дякую Пол, за ваш коментар. Можливо, я неправильно зрозумів: я зрозумів, що "Текст містить" (або "Форматувати комірки, якщо ...") має дочірнє спадне меню "Спеціальна формула:". Крім того, "Текст містить" повинен мати відповідне значення підрядка, а не "= коефіцієнт (A: A, A1)> 1;". Насправді це інший підхід.
— Шурик

12

Виділіть дублікати (у стовпці С):

=COUNTIF(C:C, C1) > 1

Пояснення: C1 Тут не посилається на перший рядок у C. Оскільки ця формула оцінюється за допомогою правила умовного формату, натомість, коли формула перевіряється, щоб перевірити, чи застосовується вона, C1фактично посилається на той, до якого рядка в даний час оцінюється подивіться, чи слід застосовувати виділення. ( Так це більше схоже INDIRECT(C &ROW()), якщо це для вас щось означає! ). По суті, при оцінці формули умовного формату все, що відноситься до рядка 1, оцінюється проти рядка, проти якого працює формула. ( І так, якщо ви використовуєте C2, то ви пропонуєте правилу перевірити стан рядка безпосередньо нижче того, який зараз оцінюється. )

Отже, це говорить, підрахуйте кількість випадків, що є в C1(поточна комірка, що оцінюється), що є у всьому стовпці, Cі якщо їх більше 1 (тобто значення має дублікати), тоді: застосуйте підсвітку ( тому що формула , загалом, оцінює доTRUE ).

Виділіть лише перший дублікат:

=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)

Пояснення: Це підкреслює лише те, що обидва COUNTIF s є TRUE(вони з’являються всередині an AND()).

Перший термін, що підлягає оцінці ( COUNTIF(C:C, C1) > 1), точно такий же, як у першому прикладі; це TRUEлише якщо все, що єC1 має дублікат. ( Пам'ятайте, що C1ефективно стосується поточного рядка, який перевіряється, щоб перевірити, чи слід його виділити ).

Другий термін ( COUNTIF(C$1:C1, C1) = 1) виглядає схожим, але він має три вирішальні відмінності:

Він не здійснює пошук у всьому стовпці C(як це робить перший:), C:Cале замість цього він починає пошук з першого рядка: C$1 (the$ змушує його буквально дивитись на рядок 1, а не на той, який рейтинг оцінюється).

І тоді він зупиняє пошук у поточному рядку, що оцінюється C1 .

Нарешті це говорить = 1 .

Отже, це буде лише у тому TRUEвипадку, якщо над рядком, який зараз оцінюється, немає дублікатів (тобто він повинен бути першим із дублікатів).

У поєднанні з тим першим терміном (який тільки буде TRUE випадку, якщо цей рядок має дублікати), це означає, що буде висвітлено лише перше виникнення.

Виділіть другий і далі дублікати:

=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)

Пояснення: Перший вираз такий самий, як і завжди ( TRUEякщо поточно оцінений рядок взагалі є дублікатом).

Другий термін точно такий же, як і останній, за винятком того, що його заперечують: він має NOT()навколо себе. Тож воно ігнорує перше виникнення.

Нарешті, третій член набирає дублікати 2, 3 і т.д. COUNTIF(C1:C, C1) >= 1ініціює діапазон пошуку в поточно оцінюваному рядку ( C1в C1:C). Тоді він оцінює лише TRUE(застосувати виділення), якщо є один або більше дублікатів нижче цього (включаючи цей): >= 1(він повинен бути >=не просто >інакше останній дублікат ігнорується).


3

Я спробував усі варіанти, і жоден не спрацював.

Мені допомогли лише сценарії програми Google.

джерело: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets

У верхній частині документа

1.- перейдіть до інструментів> редактор сценаріїв

2. - встановити назву вашого сценарію

3.- вставте цей код:

function findDuplicates() {
  // List the columns you want to check by number (A = 1)
  var CHECK_COLUMNS = [1];

  // Get the active sheet and info about it
  var sourceSheet = SpreadsheetApp.getActiveSheet();
  var numRows = sourceSheet.getLastRow();
  var numCols = sourceSheet.getLastColumn();

  // Create the temporary working sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var newSheet = ss.insertSheet("FindDupes");

  // Copy the desired rows to the FindDupes sheet
  for (var i = 0; i < CHECK_COLUMNS.length; i++) {
    var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
    var nextCol = newSheet.getLastColumn() + 1;
    sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
  }

  // Find duplicates in the FindDupes sheet and color them in the main sheet
  var dupes = false;
  var data = newSheet.getDataRange().getValues();
  for (i = 1; i < data.length - 1; i++) {
    for (j = i+1; j < data.length; j++) {
      if  (data[i].join() == data[j].join()) {
        dupes = true;
        sourceSheet.getRange(i+1,1,1,numCols).setBackground("red");
        sourceSheet.getRange(j+1,1,1,numCols).setBackground("red");
      }
    }
  }

  // Remove the FindDupes temporary sheet
  ss.deleteSheet(newSheet);

  // Alert the user with the results
  if (dupes) {
    Browser.msgBox("Possible duplicate(s) found and colored red.");
  } else {
    Browser.msgBox("No duplicates found.");
  }
};

4.- зберегти і запустити

Менш ніж за 3 секунди мій повторюваний рядок був кольоровим. Просто скопіюйте минулий сценарій.

Якщо ви не знаєте про сценарії програм Google, ці посилання можуть вам допомогти:

https://zapier.com/learn/google-sheets/google-apps-script-tutorial/

https://developers.google.com/apps-script/overview

Я сподіваюся, що це допомагає.


Чи можна цей код змінити, щоб лише виділити повторювані поля у стовпці червоним кольором замість повного рядка?
— Amr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.