Я ищу формулу для ячейки подсветки электронной таблицы Google, если значение дублируется в том же столбце
Может кто-нибудь, пожалуйста, помогите мне по этому запросу?
google-sheets
gs-conditional-formatting
user3331309
источник
источник
=COUNTIFS(A:A; A1; B:B; B1)>1
;
приводит к ошибке "неверная формула" для меня. Просто сняв это сделал свое дело. Также будьте осторожны: ячейка, указанная вами в качестве второго аргумента,countif
должна быть первой ячейкой выбранного диапазона.=countif(B:B,B2)>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()
возвращает строку номер и столбец номер данной ячейки соответственно. Если параметр не указан, будет возвращена текущая ячейка (например, на основе 1B3
будет возвращаться 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 правильный. Просто добавив GIF и шаги для справки.
Format > Conditional formatting..
Format cells if..
=countif(A:A,A1)>1
в полеCustom formula is
A
с помощью собственного столбца.источник
Я сделал точно так, как предложил zolley , но нужно сделать небольшую поправку: используйте «Пользовательская формула» вместо «Текст содержит» . И тогда будет работать условный рендеринг.
источник
Text Contains
, поэтому пользователь обычно нажимает на него, чтобы получить доступ к раскрывающемуся меню.Выделите дубликаты (в столбце C):
Объяснение:
C1
Здесь это не относится к первой строке в C. Поскольку эта формула оценивается правилом условного формата, вместо этого, когда формула проверяется на предмет ее применимости,C1
фактически ссылается на то, какая строка в настоящее время оценивается в посмотрите, должен ли быть применен основной момент. ( Так что это больше похоже на тоINDIRECT(C &ROW())
, если это что-то значит для вас! ). По сути, при оценке формулы условного формата все, что относится к строке 1, сравнивается со строкой, с которой запускается формула. ( И да, если вы используете C2, тогда вы просите правило проверить статус строки сразу под той, которая в настоящее время оценивается. )Таким образом, это говорит о том, что подсчитайте вхождения всего, что находится
C1
(текущая оцениваемая ячейка) во всем столбце,C
и если их больше 1 (т.е. значение имеет дубликаты), тогда: примените выделение ( потому что формула В общем, оцениваетTRUE
).Выделите только первый дубликат:
Пояснение: Это только подсвечивает, если оба из
COUNTIF
sTRUE
(они появляются внутриAND()
).Первый оцениваемый член (
COUNTIF(C:C, C1) > 1
) является точно таким же, как и в первом примере; этоTRUE
только в том случае, если все, что есть,C1
имеет дубликат. ( Помните, что поC1
сути относится к текущей проверяемой строке, чтобы увидеть, должна ли она быть выделена ).Второй термин (
COUNTIF(C$1:C1, C1) = 1
) выглядит аналогично, но имеет три принципиальных отличия:Он не ищет весь столбец
C
(как первый:),C:C
а вместо этого начинает поиск с первой строки:C$1
($
заставляет его смотреть буквально на строку1
, а не на какую-либо строку, которая оценивается).И тогда он останавливает поиск в текущей строке оценивается
C1
.Наконец то сказано
= 1
.Таким образом, это будет только в том
TRUE
случае, если над строкой, которая в данный момент оценивается, не будет дубликатов (то есть это должен быть первый из дубликатов).В сочетании с этим первым термином (который будет только в том
TRUE
случае, если в этой строке есть дубликаты) это означает, что будет выделено только первое вхождение.Выделите второй и последующие дубликаты:
Объяснение: Первое выражение то же, что и всегда (
TRUE
если текущая вычисляемая строка вообще является дубликатом).Второе слагаемое точно такое же, как и последнее, за исключением того, что оно отрицается: оно
NOT()
окружает его. Так что он игнорирует первый случай.Наконец, третий член поднимает дубликаты 2, 3 и т. Д.,
COUNTIF(C1:C, C1) >= 1
Начиная диапазон поиска с текущей строки (theC1
inC1:C
). Тогда он только оцениваетTRUE
(применить выделение), если есть один или несколько дубликатов ниже этого (и включая этот):>= 1
(это должно быть>=
не просто, в>
противном случае последний дубликат игнорируется).источник
Я перепробовал все варианты, и ни один не работал.
Помогли только сценарии приложения Google.
источник: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets
В верхней части вашего документа
1.- зайдите в инструменты> редактор скриптов
2.- установите название вашего скрипта
3.- вставьте этот код:
4.- сохранить и запустить
Менее чем за 3 секунды мой дублированный ряд был окрашен. Просто скопируйте сценарий.
Если вы не знаете о скриптах Google Apps, вам могут помочь следующие ссылки:
https://zapier.com/learn/google-sheets/google-apps-script-tutorial/
https://developers.google.com/apps-script/overview
Надеюсь, это поможет.
источник