¿Cómo comparar dos hojas de cálculo de Excel?

8

Me gustaría comparar dos hojas de cálculo de Excel

Ambos tienen las mismas columnas, en el mismo orden, pero no las mismas filas.

Tengo una hoja de cálculo con 1,000 filas y 50 columnas que incluye una identificación única para cada fila y datos personales (dirección, número de teléfono, etc.).

Quiero compararlo con la misma base extraída hace un año.

Mi objetivo es conocer todos los cambios (por ejemplo, alguien que cambió su dirección).

Intenté con una hoja de cálculo (como se explica aquí: compare dos archivos de Excel ) pero no funciona porque en mi archivo "nuevo" tengo nuevas filas, y tengo algunas filas en el archivo anterior que no están en el nuevo.

La hoja de cálculo se compara con el número de línea de Excel. ¿Es posible comparar con la primera columna (ID única)?

Aquí hay un ejemplo muy simplificado: https://filebin.net/g4w98251y9mfwug6

Hay dos hojas que representan mis dos hojas de cálculo.

Como puede ver, ambos tienen las mismas columnas pero:

  • Hay filas que están en ambas hojas sin cambios (todas las filas son iguales)
  • Hay filas que están en ambas hojas pero hay cambios (en naranja en mi ejemplo)
  • Hay filas que solo están en la hoja de diciembre (no necesito identificar estas líneas)
  • Hay filas que solo están en la hoja de enero (en naranja en mi ejemplo)

El color naranja es exactamente lo que quiero, pero en este ejemplo puedo hacerlo manualmente: comparando diciembre y enero. En las hojas de cálculo reales no puedo hacerlo manualmente ya que hay demasiados cambios, datos, líneas, columnas, etc. y lo haré mensualmente.

Solo hay una columna que nunca puede cambiar: la columna A.

CILUEA
fuente
Para su información, a las personas no les gusta descargar archivos, especialmente cuando los publican usuarios desconocidos. No estoy diciendo que no debas subir archivos y publicar enlaces a ellos, sino tratar de hacer que tu pregunta se mantenga por sí misma: debería ser posible entenderla sin mirar los archivos. De hecho, creo que su pregunta está bien como está; Pude responder sin mirar el archivo. Pero, por supuesto, las preguntas (especialmente las preguntas de Excel) son más claras con datos de muestra. … (Continúa)
Scott
1
(Cont.) ... Preferimos que publique una representación textual de sus datos, como se hizo aquí y aquí ; use el sitio Formato de texto como tabla o el sitio Generador de tablas de texto sin formato si lo desea. Sugiero que los datos que utilicé en mi respuesta son la cantidad correcta: una fila en cada una de las cuatro categorías que identificó en la pregunta.
Scott
Hay una buena herramienta Excel Compare por ahí. Puede comparar 2 archivos de Excel y cerrar sesión diferencias. También puedes probar Araxis Merge, aunque no es gratis.
Kromster

Respuestas:

4

Es conveniente que su hoja de cálculo use 50 columnas, porque eso significa que las columnas # 51, # 52, ... están disponibles. Su problema se resuelve con bastante facilidad con el uso de una "columna auxiliar", que podemos poner en la columna  AZ(que es la columna # 52). Vamos a suponer que la fila 1 en cada una de sus hojas contiene cabeceras (las palabrasID , Name, Address, etc.), de modo que no es necesario comparar los (ya que sus columnas están en el mismo orden en ambas hojas). También supondré que el ID(identificador único) está en la columna  A. (Si no es así, la respuesta se vuelve un poco más complicada, pero aún así bastante fácil). En la celda  AZ2(la columna disponible, en la primera fila utilizada para datos), ingrese

=B2&C2&D2&…&X2&Y2&Z2&AA2&AB2&AC3&…&AX2

enumerando todas las celdas de a  B2través  AX2&es el operador de concatenación de texto, por lo que si B2contiene Andyy C2contiene New York, B2&C2evaluará a AndyNew York. Del mismo modo, la fórmula anterior concatenará todos los datos de una fila (excluyendo el ID), dando un resultado que podría verse así:

AndyNueva York1342 Wall StreetBanquero de inversionesElizabeth2catcollege degreeUCLA…

La fórmula es larga y engorrosa de escribir, pero solo necesita hacerlo una vez (pero vea la nota a continuación antes de hacerlo). Lo mostré AX2porque la columna  AXes la columna # 50. Naturalmente, la fórmula debe cubrir todas las columnas de datos que no sean ID. Más específicamente, debe incluir cada columna de datos que desee comparar. Si tiene una columna para la edad de la persona, entonces (¿automáticamente?) Será diferente para todos, cada año, y no querrá que se informe. Y, por supuesto, la columna auxiliar, que contiene la fórmula de concatenación, debe estar a la derecha de la última columna de datos.

Ahora seleccione la celda  AZ2y arrástrela / llénela hacia abajo a través de las 1000 filas. Y haga esto en ambas hojas de trabajo.

Finalmente, en la hoja donde desea que se destaquen los cambios (supongo, por lo que dice, que esta es la hoja más reciente), seleccione todas las celdas que desea resaltar. No sé si esto es solo Columna  A, o solo Columna  B, o toda la fila (es decir, a Através  AX). Seleccione estas celdas en las filas 2 a 1000 (o donde sea que lleguen sus datos) y vaya a "Formato condicional" → "Nueva regla ...", seleccione "Usar una fórmula para determinar qué celdas formatear" e ingrese

=IFERROR(VLOOKUP($A2,'December 2017'!$A$2:$AZ$1000,52,FALSE), "") <> $AZ2

en el cuadro "Formato de valores donde esta fórmula es verdadera". Esto toma el IDvalor de la fila actual de la hoja actual ("enero de 2018") (en la celda  $A2), lo busca en la columna  Ade la hoja anterior ("diciembre de 2017"), obtiene el valor de datos concatenados de esa fila y lo compara al valor de datos concatenados en esta fila. (Por supuesto, AZes la columna auxiliar, 52es el número de columna de la columna auxiliar y 1000es la última fila de la hoja "Diciembre de 2017" que contiene datos, o algo más; por ejemplo, podría ingresar en 1200lugar de preocuparse por ser exacto). Luego haga clic en "Formato" y especifique el formato condicional que desee (por ejemplo, relleno naranja).

Hice un ejemplo con solo unas pocas filas y solo unas pocas columnas de datos, con la columna auxiliar en Columna  H:

hoja de mes / año anterior (diciembre de 2017)

hoja del mes / año actual (enero de 2018), con los cambios resaltados en naranja

Observe que la fila de Andy es de color naranja, porque se mudó de Nueva York a Los Ángeles, y la fila de Debra es de color naranja, porque ella es una nueva entrada.

Nota:   Si una fila puede tener valores como they reacten dos columnas consecutivas, y esto podría cambiar en el año siguiente a therey act, esto no se informaría como una diferencia, porque solo estamos comparando el valor concatenado, y eso ( thereact) es Lo mismo en ambas hojas. Si le preocupa esto, elija un carácter que es poco probable que aparezca en sus datos (por ejemplo, |) e insértelo entre los campos. Entonces su columna auxiliar contendría

=B2&"|"&C2&"|"&D2&"|"&…&"|"&X2&"|"&Y2&"|"&Z2&"|"&AA2&"|"&AB2&"|"&AC3&"|"&…&"|"&AX2

resultando en datos que podrían verse así:

Andy | Nueva York | 1342 Wall Street | Banquero de inversiones | Elizabeth | 2 | gato | título universitario | UCLA |…

y se informará el cambio, porque the|react ≠  there|act. Probablemente debería preocuparse por esto, pero, según lo que realmente son sus columnas, es posible que tenga razones para estar seguro de que esto nunca será un problema.

Una vez que lo haga funcionar, puede ocultar las columnas auxiliares.

Scott
fuente
1

Vaya a la pestaña Vista y haga clic en Nueva ventana. Vaya a la nueva ventana y haga clic lado a lado. Puede sincronizar el desplazamiento haciendo clic en Desplazamiento sincrónico. Verifique la imagen adjunta: Hojas de Excel lado a lado

El desplazamiento sincrónico le brinda la ventaja de desplazarse simultáneamente por diferentes hojas de trabajo. Al alternar el botón, podrá ver ambos juntos y desplazarse solo una hoja de trabajo.

Cetza Nido
fuente
Tengo más de 1000 líneas en cada hoja de cálculo ... 50 columnas ... algunos datos son muy difíciles de comparar al verlos (datos del banco, número de teléfono, fechas ...) Es demasiado largo para proceder de esa manera y existe el riesgo de error / omisión Tendré que hacer esto mensualmente. ¿No hay una solución más rápida? :(
CILUEA
En la misma vista, puede aplicar filtros a las columnas. Agregue fórmulas de búsqueda en cualquiera de las hojas de trabajo.
Cetza Nido
No quiero aplicar filtros a las columnas ... Tengo dos hojas de cálculo (una línea = un empleado) y quiero resaltar los datos modificados (dirección, teléfono ...) para cada empleado, entre la hoja de cálculo anterior (última mes) y la nueva hoja de cálculo (este mes) No puedo hacerlo manualmente cada mes. Son más de 1 000 líneas en cada hoja de cálculo y 50 columnas
CILUEA
Puede usar la fórmula de búsqueda O índice + coincidencia junto con el formato condicional. ¿Es posible compartir su hoja con algunos datos de muestra?
Cetza Nido
He editado mi publicación con un ejemplo y más explicaciones ... ¡Gracias!
CILUEA
1

Ok, entonces puedes hacer una de dos cosas.

1.- La solución OOTB es ir a "Datos" -> "Herramientas de datos" -> "Eliminar (Esta es la traducción directa del español) Duplicados". De esta manera, debe agregar ambas tablas, y terminará con solo los datos que se han cambiado y solo los únicos. Por lo tanto, para filtrar el uso CountIfen sus ID únicos, anule la selección de lo que se ha contado como 1. Ordene por uniqueId y verá claramente qué se ha cambiado.

2.-Usa esta fórmula

IF(Index("rangetoreturn";Match("CellofUniqueID";"Rangeofuniqueidtolookinto";0))<>"OneOftheCellthatcontainsthesameasRangeToReturn";"Info Has Changed";"InfoHasNotChanged")

Esta fórmula se puede arrastrar hacia la derecha y hacia abajo. Entonces obtendrá una tabla con la condición if, con la misma cantidad de líneas que la tabla de "CellofUniqueID". La posición de la "Información ha cambiado", le dirá qué celda en la otra tabla ha cambiado su contenido. Entonces use esta fórmula en una nueva hoja y cree una nueva tabla. Luego mira los filtros y deselecciona "InfoHasNotChanged" (o cualquier palabra que quieras usar).

"rangetoreturn" y "Rangeofuniqueidtolookinto" son de una tabla (u hoja), y "CellofUniqueID" es de la otra tabla.

Salud

dmb
fuente
Gracias ! La primera solución podría ser la más fácil, pero no funciona: (¿o tal vez no entendí bien?) La opción "eliminar duplicado" eliminará algunas líneas, y quiero mantener todas las líneas en ambas hojas. Además, solo tener una columna en la hoja con datos únicos, todas las demás columnas tienen muchas líneas con los mismos datos en su interior (por ejemplo, dos personas con la misma fecha de nacimiento o la misma edad ...)
CILUEA
Opción 2: ¿qué son rangetoreturn / Rangeofuniqueidtolookinto / OneOftheCellthatconthesameasRangeToReturn?
CILUEA
@CILUEA para la opción 2, "rango de retorno", es el rango de información que desea recuperar. "Rangeofuniqueidtolookinto" es, literalmente, la gama de ID únicos donde buscará su identificación única. "Una de las celdas que contiene el mismo rango de retorno", esta es la información que comparará con la que está trayendo, por lo que si es diferente, se lo dirá. Lamentablemente, no hay una respuesta cómoda a menos que conozca un poco de VBA, que no lo parece.
dmb
@CILUEA para la opción 1, debe crear una nueva tabla a partir de ambas tablas. Luego elimine los duplicados. Luego, también puede usar CountIfy filtrar por 2 ocurrencias, cuando tiene 1 ocurrencia significa que la información no ha cambiado. Por último, ordene por su identificación única. También coloque una bandera en una nueva columna de columnas, para que sepa de qué tabla proviene su información. Ahora puede ver claramente cuáles son las diferencias
dmb
@Scott "Out of the Box" ... Cometí un error, debería ser OOTB, lo siento, el inglés no es mi primer idioma.
dmb