Я шукаю формулу для підсвічування комірки електронної таблиці Google, якщо значення дублюється в одному стовпці
може хто-небудь, будь ласка, допомогти мені у цьому запиті?
Я шукаю формулу для підсвічування комірки електронної таблиці Google, якщо значення дублюється в одному стовпці
може хто-небудь, будь ласка, допомогти мені у цьому запиті?
Відповіді:
Спробуйте це:
Custom formula is=countif(A:A,A1)>1(або змінити Aвибраний стовпець)A1:A100).Все, що написано в клітинках A1: A100, буде перевірено, і якщо є дублікат (зустрічається більше одного разу), він буде кольоровим.
Для локалів, що використовують коми ( ,) в якості десяткового роздільника, роздільник аргументів, швидше за все, є крапкою з комою ( ;). Тобто спробуйте:, =countif(A:A;A1)>1замість цього.
Для кількох стовпців використовуйте countifs.
;призводить до помилки "невірної формули" для мене. Просто вилучивши це зробило свою справу. Також будьте обережні: клітина, яку ви вказали як другий аргумент, countifповинна бути першою коміркою вибраного діапазону.
=countif(B:B,B2)>1. Це дозволяє зробити досить розширене форматування при використанні абсолютних відносних посилань на комірки.
Хоча відповідь Золлі цілком підходить для питання, ось більш загальне рішення для будь-якого діапазону, а також пояснення:
=COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1
Зверніть увагу, що в цьому прикладі я буду використовувати діапазон A1:C50. Перший параметр ( $A$1:$C$50) слід замінити діапазоном, у якому ви хочете виділити дублікати!
для виділення дублікатів:
Format>Conditional formatting...Apply to rangeВиберіть діапазон, до якого має застосовуватися правило.Format cells if, виберіть Custom formula isу спадному меню.Чому це працює?
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(...))*(NOT(ISBLANK(INDIRECT(...current cell...))))). Це найкраще, що я можу зробити на мобільному телефоні. :)
$A$1:$C$50- відповідно до розглянутих стовпців. Мені подобається цей загальний підхід більше, ніж zolley.
Відповідь @zolley правильна. Просто додавання Gif та кроки для посилання.
Format > Conditional formatting..Format cells if..=countif(A:A,A1)>1в полеCustom formula is
Aу власному стовпчику.У спадному меню "Текст містить" виберіть "Спеціальна формула:", і напишіть: "= counttif (A: A, A1)> 1" (без лапок)
Я зробив саме так, як запропонував zolley , але слід зробити невелику корекцію: використовуйте "Спеціальна формула" замість "Текст містить" . І тоді умовна візуалізація спрацює.

Text Contains, так що саме користувач зазвичай натискає, щоб отримати доступ до спадного меню.
=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(він повинен бути >=не просто >інакше останній дублікат ігнорується).
Я спробував усі варіанти, і жоден не спрацював.
Мені допомогли лише сценарії програми 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
Я сподіваюся, що це допомагає.
=COUNTIFS(A:A; A1; B:B; B1)>1