Я шукаю формулу для підсвічування комірки електронної таблиці 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