Як виділити клітинку, якщо значення дублюється у тому ж стовпці для електронної таблиці 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.