Estoy buscando la fórmula para la celda resaltada de la hoja de cálculo de Google si el valor está duplicado en la misma columna
¿Alguien puede ayudarme con esta consulta?
Estoy buscando la fórmula para la celda resaltada de la hoja de cálculo de Google si el valor está duplicado en la misma columna
¿Alguien puede ayudarme con esta consulta?
Respuestas:
Prueba esto:
Custom formula is
=countif(A:A,A1)>1
(o cambie A
a la columna elegida)A1:A100
).Cualquier cosa escrita en las celdas A1: A100 se verificará, y si hay un duplicado (ocurre más de una vez), se coloreará.
Para las configuraciones regionales que usan coma ( ,
) como separador decimal, el separador de argumento es muy probablemente un punto y coma ( ;
). Es decir, intente: en su =countif(A:A;A1)>1
lugar.
Para múltiples columnas, use countifs
.
;
resulta en un error de "fórmula no válida" para mí. Solo quitarlo hizo el truco. También tenga cuidado: la celda que especifique como segundo argumento del countif
debería ser la primera celda del rango que seleccione.
=countif(B:B,B2)>1
. Esto le permite a uno hacer un formateo bastante avanzado cuando usa referencias de celda absolutas versus relativas.
Si bien la respuesta de zolley es perfectamente correcta para la pregunta, aquí hay una solución más general para cualquier rango, más una explicación:
=COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1
Tenga en cuenta que en este ejemplo utilizaré el rango A1:C50
. ¡El primer parámetro ( $A$1:$C$50
) debe reemplazarse con el rango en el que desea resaltar duplicados!
para resaltar duplicados:
Format
>Conditional formatting...
Apply to range
, seleccione el rango al que se debe aplicar la regla.Format cells if
, seleccione Custom formula is
en el menú desplegable.Por que funciona
COUNTIF(range, criterion)
, Comparará cada célula en range
la criterion
que se procesa de manera similar a las fórmulas. Si no se proporcionan operadores especiales, comparará cada celda del rango con la celda dada y devolverá el número de celdas que coinciden con la regla (en este caso, la comparación). Estamos usando un rango fijo (con $
signos) para que siempre veamos el rango completo.
El segundo bloque, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))
devolverá el contenido actual de la celda. Si esto se colocó dentro de la celda, los documentos habrán llorado por la dependencia circular, pero en este caso, la fórmula se evalúa como si estuviera en la celda, sin cambiarla.
ROW()
y COLUMN()
devolverá el número de fila y el número de columna de la celda dada, respectivamente. Si no se proporciona ningún parámetro, se devolverá la celda actual (esto se basa en 1, por ejemplo, B3
devolverá 3 para ROW()
y 2 para COLUMN()
).
Luego usamos: ADDRESS(row, column, [absolute_relative_mode])
para traducir la fila numérica y la columna a una referencia de celda (como B3
. Recuerde, mientras estamos dentro del contexto de la celda, no sabemos su dirección O contenido, y necesitamos el contenido para poder compararlo). El tercer parámetro se encarga del formato y 4
devuelve los me INDIRECT()
gusta del formato .
INDIRECT()
, tomará una referencia de celda y devolverá su contenido. En este caso, el contenido actual de la celda. Luego, de vuelta al inicio, COUNTIF()
probará cada celda del rango contra la nuestra y devolverá el recuento.
El último paso es hacer nuestra fórmula devuelve un valor booleano, por lo que es una expresión lógica: COUNTIF(...) > 1
. Se > 1
usa porque sabemos que hay al menos una celda idéntica a la nuestra. Esa es nuestra célula, que está en el rango, y por lo tanto se comparará con ella misma. Entonces, para indicar un duplicado, necesitamos encontrar 2 o más celdas que coincidan con las nuestras.
Fuentes:
*
) y otra verificación, de manera similar ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...)))))
. Eso es lo mejor que puedo hacer en dispositivos móviles. :)
$A$1:$C$50
, de acuerdo con las columnas en cuestión. Me gusta más este enfoque genérico que el de Zolley.
La respuesta de @zolley es correcta. Simplemente agregue un Gif y pasos para la referencia.
Format > Conditional formatting..
Format cells if..
=countif(A:A,A1)>1
en campoCustom formula is
A
con su propia columna.En el menú desplegable "El texto contiene", seleccione "La fórmula personalizada es:" y escriba: "= countif (A: A, A1)> 1" (sin las comillas)
Hice exactamente lo que propuso Zolley , pero debería hacerse una pequeña corrección: use "La fórmula personalizada es" en lugar de "El texto contiene" . Y luego el renderizado condicional funcionará.
Text Contains
, por lo que generalmente es en lo que un usuario haría clic para acceder al menú desplegable.
=COUNTIF(C:C, C1) > 1
Explicación: C1
Aquí no se refiere a la primera fila en C. Debido a que esta fórmula se evalúa mediante una regla de formato condicional, en cambio, cuando se verifica la fórmula para ver si se aplica, C1
efectivamente se refiere a la fila que se está evaluando actualmente. ver si se debe aplicar el resaltado. (¡ Entonces es más como INDIRECT(C &ROW())
si eso significara algo para ti! ). Esencialmente, cuando se evalúa una fórmula de formato condicional, todo lo que se refiere a la fila 1 se evalúa contra la fila con la que se ejecuta la fórmula. ( Y sí, si usa C2, entonces le pide a la regla que verifique el estado de la fila inmediatamente debajo de la que se está evaluando actualmente ) .
Entonces, esto dice, cuente las ocurrencias de lo que esté en C1
(la celda actual que se está evaluando) que está en toda la columna C
y si hay más de 1 de ellas (es decir, el valor tiene duplicados) entonces: aplique el resaltado ( porque la fórmula , en general, evalúa aTRUE
).
=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)
Explicación: Esto solo se resalta si ambas COUNTIF
son TRUE
(aparecen dentro de una AND()
).
El primer término a evaluar (el COUNTIF(C:C, C1) > 1
) es exactamente el mismo que en el primer ejemplo; es TRUE
solo si lo que está dentro C1
tiene un duplicado. ( Recuerde que C1
efectivamente se refiere a la fila actual que se verifica para ver si debe resaltarse ).
El segundo término ( COUNTIF(C$1:C1, C1) = 1
) es similar pero tiene tres diferencias cruciales:
No busca en toda la columna C
(como lo hace la primera:) C:C
sino que comienza la búsqueda desde la primera fila: C$1
(lo $
obliga a mirar literalmente en la fila 1
, no en la fila que se está evaluando).
Y luego detiene la búsqueda en la fila actual que se está evaluando C1
.
Finalmente lo dice = 1
.
Por lo tanto, solo será TRUE
si no hay duplicados por encima de la fila que se está evaluando actualmente (lo que significa que debe ser el primero de los duplicados).
Combinado con ese primer término (que solo será TRUE
si esta fila tiene duplicados), esto significa que solo se resaltará la primera aparición.
=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)
Explicación: La primera expresión es la misma de siempre ( TRUE
si la fila evaluada actualmente es un duplicado).
El segundo término es exactamente el mismo que el último, excepto que se niega: tiene un NOT()
alrededor. Entonces ignora la primera ocurrencia.
Finalmente, el tercer término recoge los duplicados 2, 3, etc., COUNTIF(C1:C, C1) >= 1
comienza el rango de búsqueda en la fila evaluada actualmente (la C1
en el C1:C
). Luego, solo se evalúa para TRUE
(aplicar resaltado) si hay uno o más duplicados debajo de este (e incluido este): >= 1
(no debe ser >=
solo, de lo >
contrario, se ignorará el último duplicado).
Probé todas las opciones y ninguna funcionó.
Solo los scripts de aplicaciones de Google me ayudaron.
fuente: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets
En la parte superior de su documento
1.- ir a herramientas> editor de script
2.- establece el nombre de tu script
3.- pegue este código:
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.- guardar y correr
En menos de 3 segundos, mi fila duplicada estaba coloreada. Simplemente copie el guión.
Si no conoce los scripts de aplicaciones de Google, estos enlaces pueden serle de ayuda:
https://zapier.com/learn/google-sheets/google-apps-script-tutorial/
https://developers.google.com/apps-script/overview
Espero que esto ayude.
=COUNTIFS(A:A; A1; B:B; B1)>1