Comment comparer deux feuilles de calcul Excel?

8

Je voudrais comparer deux feuilles de calcul Excel

Les deux ont les mêmes colonnes, dans le même ordre, mais pas les mêmes lignes.

J'ai une feuille de calcul avec 1000 lignes et 50 colonnes comprenant un identifiant unique pour chaque ligne et des données personnelles (adresse, numéro de téléphone, etc.).

Je veux le comparer avec la même base extraite il y a un an.

Mon objectif est de connaître tous les changements (par exemple, quelqu'un qui a changé d'adresse).

J'ai essayé avec une feuille de calcul (comme expliqué ici: comparer deux fichiers Excel ) mais cela ne fonctionne pas parce que dans mon "nouveau" fichier j'ai de nouvelles lignes, et j'ai quelques lignes dans l'ancien fichier qui ne sont pas dans le nouveau.

Feuille de calcul comparer avec le numéro de ligne Excel. Est-il possible de comparer avec la première colonne (ID unique)?

Voici un exemple très simplifié: https://filebin.net/g4w98251y9mfwug6

Il y a deux feuilles représentant mes deux feuilles de calcul.

Comme vous pouvez le voir, les deux ont les mêmes colonnes mais:

  • Il y a des lignes sur les deux feuilles sans changement (toutes les lignes sont identiques)
  • Il y a des lignes sur les deux feuilles mais il y a des changements (en orange sur mon exemple)
  • Il y a des lignes qui ne sont que dans la feuille de décembre (je n'ai pas besoin d'identifier ces lignes)
  • Il y a des lignes qui ne sont que dans la feuille de janvier (en orange sur mon exemple)

La couleur orange est exactement ce que je veux, mais dans cet exemple, je peux le faire manuellement: comparer décembre et janvier. Dans les vraies feuilles de calcul, je ne peux pas le faire manuellement car il y a trop de changements, de données, de lignes, de colonnes, etc. et je le ferai tous les mois.

Il n'y a qu'une seule colonne qui ne peut jamais changer: la colonne A.

CILUEA
la source
Pour info, les gens n'aiment pas télécharger des fichiers, surtout lorsqu'ils sont publiés par des utilisateurs inconnus. Je ne dis pas que vous ne devez pas télécharger des fichiers et publier des liens vers eux, mais essayez de faire en sorte que votre question soit autonome - il devrait être possible de la comprendre sans regarder les fichiers. Je crois en fait que votre question est très bien telle quelle; J'ai pu y répondre sans regarder le dossier. Mais, bien sûr, les questions (en particulier les questions Excel) sont plus claires avec des exemples de données. … (Suite)
Scott
1
(Suite)… Nous préférons que vous publiez une représentation textuelle de vos données, comme cela a été fait ici et ici ; utilisez le site Format de texte en tant que tableau ou le site Générateur de tableaux en texte brut si vous le souhaitez. Je suggère que les données que j'ai utilisées dans ma réponse sont juste ce qu'il faut: une ligne dans chacune des quatre catégories que vous avez identifiées dans la question.
Scott
Il existe un bel outil de comparaison Excel. Il peut comparer 2 fichiers Excel et déconnecter les différences. Vous pouvez également essayer Araxis Merge, bien qu'il ne soit pas gratuit.
Kromster

Réponses:

4

Il est pratique que votre feuille de calcul utilise 50 colonnes, car cela signifie que les colonnes # 51, # 52,… sont disponibles. Votre problème est assez facilement résolu avec l'utilisation d'une «colonne d'assistance», que nous pouvons mettre dans la colonne  AZ(qui est la colonne # 52). Je suppose que la ligne 1 sur chacune de vos feuilles contient des en- têtes (les motsID , Name, Address, etc.) de sorte que vous n'avez pas besoin de comparer ces (puisque vos colonnes sont dans le même ordre dans les deux feuilles). Je suppose également que ID(l'identifiant unique) est dans la colonne  A. (Si ce n'est pas le cas, la réponse devient un peu plus compliquée, mais reste assez simple.) Dans la cellule  AZ2(la colonne disponible, dans la première ligne utilisée pour les données), entrez

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

répertoriant toutes les cellules de bout en  B2bout  AX2&est l'opérateur de concaténation de texte, donc si B2contient Andyet C2contient New York, alors B2&C2sera évalué à AndyNew York. De même, la formule ci-dessus va concaténer toutes les données d'une ligne (à l'exclusion de la ID), donnant un résultat qui pourrait ressembler à ceci:

AndyNew York1342 Wall StreetInvestment BankerElizabeth2catcollege degreeUCLA…

La formule est longue et lourde à taper, mais vous ne devez le faire qu'une seule fois (mais consultez la note ci-dessous avant de le faire). Je l'ai montré AX2car la colonne  AXest la colonne # 50. Naturellement, la formule doit couvrir toutes les colonnes de données autres que ID. Plus précisément, il doit inclure chaque colonne de données que vous souhaitez comparer. Si vous avez une colonne pour l'âge de la personne, cela sera (automatiquement?) Différent pour tout le monde, chaque année, et vous ne voudrez pas que cela soit signalé. Et bien sûr, la colonne d'assistance, qui contient la formule de concaténation, devrait se trouver quelque part à droite de la dernière colonne de données.

Maintenant, sélectionnez la cellule  AZ2et faites-la glisser vers le bas à travers les 1000 lignes. Et faites-le sur les deux feuilles de calcul.

Enfin, sur la feuille où vous souhaitez que les modifications soient mises en évidence (je suppose, d'après ce que vous dites, que c'est la feuille la plus récente), sélectionnez toutes les cellules que vous souhaitez mettre en évidence. Je ne sais pas si c'est juste une colonne  A, ou juste une colonne  B, ou la ligne entière (c'est-à-dire, Apar le biais  AX). Sélectionnez ces cellules sur les lignes 2 à 1 000 (ou là où vos données pourraient éventuellement atteindre), puis allez dans «Mise en forme conditionnelle» → «Nouvelle règle…», sélectionnez «Utiliser une formule pour déterminer les cellules à formater» et entrez

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

dans le "Format des valeurs où cette formule est vraie". Cela prend la IDvaleur de la ligne actuelle de la feuille actuelle («janvier 2018») (dans la cellule  $A2), la recherche dans la colonne  Ade la feuille précédente («décembre 2017»), obtient la valeur de données concaténées de cette ligne et la compare à la valeur de données concaténées sur cette ligne. (Bien sûr, il AZs'agit de la colonne d'assistance, 52du numéro de colonne de la colonne d'assistance et de 1000la dernière ligne de la feuille «Décembre 2017» qui contient des données - ou un peu plus; par exemple, vous pouvez entrer 1200plutôt que de vous soucier d'être exact.) Cliquez ensuite sur «Format» et spécifiez la mise en forme conditionnelle que vous souhaitez (par exemple, remplissage orange).

J'ai fait un exemple avec seulement quelques lignes et seulement quelques colonnes de données, avec la colonne d'assistance dans la colonne  H:

fiche mois / année précédente (décembre 2017)

feuille mois / année en cours (janvier 2018), avec les changements surlignés en orange

Observez que la rangée d'Andy est de couleur orange, car il a déménagé de New York à Los Angeles, et que la rangée de Debra est de couleur orange, parce qu'elle est une nouvelle entrée.

Remarque:   Si une ligne peut avoir des valeurs comme theet reactdans deux colonnes consécutives, et cela pourrait changer l'année suivante en thereet act, cela ne serait pas signalé comme une différence, car nous comparons simplement la valeur concaténée, et que ( thereact) est la même chose sur les deux feuilles. Si cela vous inquiète, choisissez un caractère qui ne figurera probablement jamais dans vos données (par exemple, |) et insérez-le entre les champs. Ainsi, votre colonne d'aide contiendrait

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

résultant en des données qui pourraient ressembler à ceci:

Andy | New York | 1342 Wall Street | Investment Banker | Elizabeth | 2 | cat | diplôme universitaire | UCLA |…

et le changement sera signalé, car the|react ≠  there|act. Vous devriez probablement vous inquiéter à ce sujet, mais, en fonction de ce que sont réellement vos colonnes, vous pourriez avoir des raisons d'être confiant que ce ne sera jamais un problème.

Une fois que cela fonctionne, vous pouvez masquer les colonnes d'assistance.

Scott
la source
1

Accédez à l'onglet Affichage et cliquez sur Nouvelle fenêtre. Accédez à la nouvelle fenêtre et cliquez côte à côte. Vous pouvez synchroniser le défilement en cliquant sur Défilement synchrone. Vérifiez l'image ci-jointe: Feuilles Excel côte à côte

Le défilement synchrone vous offre l'avantage de faire défiler simultanément différentes feuilles de calcul. Basculer le bouton vous permettrait de voir les deux ensemble et de faire défiler une seule feuille de calcul.

Cetza Nido
la source
J'ai plus de 1 000 lignes dans chaque feuille de calcul ... 50 colonnes .. certaines données sont très difficiles à comparer en les visualisant (données bancaires, numéro de téléphone, dates ...) C'est trop long pour procéder comme ça et il y a un risque d'erreur / Omission Je devrai le faire tous les mois. Il n'y a pas de solution plus rapide? :(
CILUEA
Dans la même vue, vous pouvez appliquer des filtres aux colonnes. Ajoutez des formules de recherche sur l'une des feuilles de calcul.
Cetza Nido
Je ne veux pas appliquer de filtres aux colonnes ... J'ai deux feuilles de calcul (une ligne = un employé) et je veux mettre en évidence les données modifiées (adresse, téléphone ..) pour chaque employé, entre l'ancienne feuille de calcul (dernière mois) et la nouvelle feuille de calcul (ce mois-ci) Je ne peux pas le faire manuellement chaque mois .. C'est plus de 1 000 lignes dans chaque feuille de calcul et 50 colonnes
CILUEA
Vous pouvez utiliser la recherche OU l'index + la formule de correspondance avec une mise en forme conditionnelle. Est-il possible de partager votre feuille avec quelques exemples de données?
Cetza Nido
J'ai édité mon article avec un exemple et plus d'explications .. Merci!
CILUEA
1

Ok, donc vous pouvez faire deux choses.

1.- La solution OOTB consiste à aller dans "Data" -> "Data Tools" -> "Delete (Ceci est la traduction directe de l'espagnol) Duplicates". De cette façon, vous devez ajouter les deux tableaux et vous ne vous retrouverez qu'avec les données qui ont été modifiées et uniquement les uniques. Donc, pour filtrer l'utilisation CountIfsur vos ID uniques, désélectionnez ce qui a été compté comme 1. Commandez par uniqueId et vous verrez clairement ce qui a été changé.

2.-Utilisez cette formule

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

Cette formule peut être déplacée vers la droite et vers le bas. Vous obtiendrez donc un tableau avec la condition if, avec la même quantité de lignes que le tableau de "CellofUniqueID". La position de "Info a changé" vous indiquera quelle cellule de l'autre tableau a changé son contenu. Utilisez donc cette formule dans une nouvelle feuille et créez un nouveau tableau. Regardez ensuite les filtres et désélectionnez "InfoHasNotChanged" (ou le mot que vous souhaitez utiliser).

«rangetoreturn» et «Rangeofuniqueidtolookinto» proviennent d'une table (ou feuille) et «CellofUniqueID» de l'autre table.

À votre santé

dmb
la source
Merci ! La première solution pourrait être la plus simple mais elle ne fonctionne pas: (ou peut-être que je n'ai pas bien compris?) L'option "supprimer le doublon" supprimera certaines lignes, et je veux garder toutes les lignes dans les deux feuilles. avoir une colonne sur la feuille avec des données uniques, toutes les autres colonnes ont de nombreuses lignes avec les mêmes données à l'intérieur (par exemple, deux personnes avec la même date de naissance ou le même âge ..)
CILUEA
Option 2: qu'est-ce que rangetoreturn / Rangeofuniqueidtolookinto / OneOftheCellthatcontainsthesameasRangeToReturn?
CILUEA
@CILUEA pour l'option 2, "rangeofreturn", c'est la plage d'informations que vous souhaitez rapporter. "Rangeofuniqueidtolookinto" qui est littéralement la gamme d'unidids où vous chercherez votre identifiant unique. "OneOftheCellthatcontainsthesameasRangeToReturn" ce sont les informations que vous comparerez avec celle que vous ramenez, donc si elle est différente, elle vous le dira. Malheureusement, il n'y a pas de réponse confortable à moins que vous ne connaissiez un peu VBA, ce qui ne semble pas être le cas.
dmb
@CILUEA pour l'option 1, vous devez créer un nouveau tableau à partir des deux tableaux. Supprimez ensuite les doublons. Ensuite, vous pouvez également utiliser CountIfet filtrer par 2 occurrences, lorsque vous avez 1 occurrence signifie que les informations n'ont pas changé. Enfin, commandez par votre identifiant unique. Jetez également un indicateur dans une nouvelle colonne de colonnes, afin que vous sachiez de quel tableau proviennent vos informations. Maintenant, vous pouvez clairement voir quelles sont les différences
dmb
@Scott "Out of the Box" ... J'ai fait une erreur là où ça devrait être OOTB, désolé l'anglais n'est pas ma première langue.
dmb