2つのExcelスプレッドシートを比較する方法


8

2つのExcelスプレッドシートを比較したい

両方とも同じ列を同じ順序で持っていますが、同じ行は持っていません。

1,000行50列のスプレッドシートがあり、各行の一意のIDと個人データ(住所、電話番号など)が含まれています。

1年前に抽出した同じベースと比較したいと思います。

私の目的は、すべての変更(たとえば、住所を変更した人)を知ることです。

私はスプレッドシートで試しました(ここで説明するように2つのExcelファイルを比較します)が、「新しい」ファイルに新しい行があり、古いファイルに新しい行ではない行があるため、機能しません。

スプレッドシートをExcelの行番号と比較します。最初の列(一意のID)と比較することはできますか?

これは非常に単純化された例です:https : //filebin.net/g4w98251y9mfwug6

2つのスプレッドシートを表す2つのシートがあります。

ご覧のとおり、両方に同じ列がありますが:

  • 両方のシートに変更のない行があります(すべての行は同じです)
  • 両方のシートにある行がありますが、変更があります(私の例ではオレンジ色)
  • 12月のシートのみにある行があります(これらの行を識別する必要はありません)
  • 1月のシート(私の例ではオレンジ色)にのみある行があります

オレンジ色はまさに私が望むものですが、この例では手動で行うことができます:12月と1月を比較します。実際のスプレッドシートでは、変更、データ、行、列などが多すぎるため、手動で行うことはできません。これは毎月行います。

変更できない列は1つしかありません。列Aです。


参考までに、特に未知のユーザーによって投稿された場​​合、人々はファイルをダウンロードすることを好みません。ファイルをアップロードしてリンクを投稿すべきではないと言っているわけではありませんが、質問をそのままにしてみてください。ファイルを見なくても理解できるはずです。私は実際、あなたの質問はそのままでいいと信じています。ファイルを見ずに答えることができました。ただし、もちろん、質問(特にExcelの質問)はサンプルデータの方が明確です。…(続き)
スコット

1
(続き)… ここここで行われように、データのテキスト表現を投稿することをお勧めします。必要に応じて、「テキストを表としてフォーマット」サイトまたは「プレーンテキスト表ジェネレーター」サイトを使用します。私が答えに使用したデータは、適切な量であるとお勧めします。質問で特定した4つのカテゴリのそれぞれに1行あります。
スコット

すばらしいExcel Compareツールがあります。2つのExcelファイルを比較し、相違点をログアウトできます。Araxis Mergeを試すこともできますが、無料ではありません。
クロムスター

回答:


3

スプレッドシートで50列を使用すると便利です。これは、列#51、#52、…が使用できることを意味します。「ヘルパー列」を使用することで、問題をかなり簡単に解決でき  AZます。これは、列(列#52)に配置できます。私はあなたのシートのそれぞれに、その行1は、ヘッダ(含まれていると仮定します言葉IDNameAddress、など)ので、(あなたの列は、両方のシートで同じ順序であるので)あなたがそれらを比較する必要はありません。また、ID(一意の識別子)がColumnにある  と仮定しますA。(そうでない場合、答えはもう少し複雑になりますが、それでもかなり簡単です。)セル  AZ2(データに使用される最初の行の利用可能な列)に、入力します

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

以下からのすべてのセルをリスト  B2による  AX2。  &はテキスト連結演算子であるため、B2contains AndyおよびC2containsの場合New YorkB2&C2評価はになりAndyNew Yorkます。同様に、上記の式は、行のすべてのデータ(を除くID)を連結、次のような結果をもたらします。

アンディニューヨーク1342ウォールストリート投資銀行家エリザベス2キャットカレッジ学位UCLA…

数式は長くて入力が面倒ですが、一度だけ実行する必要があります(実際に入力する前に以下のメモを参照してください)。AX2AXが列50であるため、それが通過すること  を示しました。当然、式は以外のすべてのデータ列をカバーする必要がありますID。具体的には、比較するすべてのデータ列を含める必要があります。その人の年齢の列がある場合、それは(自動的に?)年ごとに異なるため、報告されることは望ましくありません。そしてもちろん、連結式を含むヘルパー列は、最後のデータ列の右側のどこかにあるはずです。

セルを選択し  AZ2、1000行すべてを下にドラッグ/入力します。両方のワークシートでこれを行います。

最後に、変更を強調表示するシート(これは最近のシートだと思います)で、強調表示するすべてのセルを選択します。私は、これは単なる列であるかどうかわからない  A、または単に列  B、または行全体(すなわち、A経由  AX)。行2〜1000(またはデータが最終的に到達する可能性のある場所)でこれらのセルを選択し、「条件付き書式設定」→「新しいルール…」に進み、「数式を使用して書式設定するセルを決定する」を選択し、入力します

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

「この式が真の場合の値のフォーマット」ボックスに入力します。これは、ID現在の(「2018年1月」)シートの現在の行(セル内  $A2Aから値を取得し、前の(「2017年12月」)シートの列で検索し  、その行から連結されたデータ値を取得して比較しますこの行の連結データ値に。(もちろんAZ、ヘルパー列、ヘルパー列 52列番号、および1000データを含む「2017年12月」シートの最後の行、またはそれよりも高い値です。たとえば、1200正確であることを心配するのではなく入力できます。)次に、「フォーマット」をクリックして、必要な条件付きフォーマット(オレンジ色の塗りつぶしなど)を指定します。

Columnのヘルパー列を使用して、数行と数列のデータ列のみを使用した例を実行しました  H

前月/年(2017年12月)シート

現在の月/年(2018年1月)シート、変更はオレンジ色で強調表示

Andyの行はオレンジ色になっていることに注意してください。彼はニューヨークからロサンゼルスに移動したので、Debraの行はオレンジ色になっています。彼女は新しいエントリだからです。

注:   行は以下のような値を持っている可能性がある場合theと、react二つの連続する列に、これはに次の年に変更することができますthereし、act(これが差として報告されない、我々だけ連結した値を比較しているので、それthereactです)両方のシートで同じ。これが心配な場合は、データに含まれる可能性が低い文字(例|:)を選択し、フィールド間に挿入します。ヘルパー列には次が含まれます

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

結果は次のようなデータになります。

アンディ|ニューヨーク| 1342ウォールストリート|投資銀行家|エリザベス| 2 |猫|大学の学位| UCLA |…

the|react ≠  であるため、変更が報告されthere|actます。おそらくこれについて心配する必要がありますが、列が実際に何であるかに基づいて、これが問題にならないことを確信する理由があるかもしれません。

これが機能するようになったら、ヘルパー列を非表示にできます。


1

[表示]タブに移動し、[新しいウィンドウ]をクリックします。新しいウィンドウに移動して、並んでクリックします。[同期スクロール]をクリックすると、スクロールを同期できます。添付画像を確認してください: Excelシートを並べて

同期スクロールには、異なるワークシートを同時にスクロールするという利点があります。ボタンを切り替えると、両方を一緒に表示し、1つのワークシートのみをスクロールできます。


各スプレッドシートには1,000行以上あります... 50列..一部のデータは表示して比較するのが非常に困難です(銀行データ、電話番号、日付...)エラー/省略の私はこれを毎月行う必要があります..より速い解決策はありませんか?:(
CILUEA

同じビューで、列にフィルターを適用できます。いずれかのワークシートに検索式を追加します。
チェツァニド

列にフィルターを適用したくない... 2つのスプレッドシート(​​1行= 1人の従業員)があり、古いスプレッドシート(​​最後のスプレッドシート)の間で各従業員の変更されたデータ(住所、電話番号)を強調表示したい月)と新しいスプレッドシート(​​今月)毎月手動で行うことはできません。各スプレッドシートの1 000行を超え、50列
CILUEA

ルックアップORインデックス+マッチ式と条件付き書式を使用できます。シートをいくつかのサンプルデータと共有することは可能ですか?
セッツァニド

投稿を例と詳細な説明で編集しました。ありがとう!
CILUEA

1

わかりましたので、次の2つのいずれかを実行できます。

1.- OOTBソリューションは、「データ」->「データツール」->「削除(これはスペイン語からの直接翻訳です)Duplicates」に移動します。この方法では、両方のテーブルを追加する必要があり、変更されたデータと一意のデータのみになります。したがってCountIf、uniqueidでの使用を除外するには、1としてカウントされているものの選択を解除します。uniqueIdで並べ替えると、変更内容が明確に表示されます。

2.-この式を使用

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

この式は、右および下にドラッグできます。したがって、「CellofUniqueID」のテーブルと同じ行数のif条件を持つテーブルを取得します。「Info Has changed」の位置は、他のテーブルのどのセルがコンテンツを変更したかを示します。そのため、この式を新しいシートで使用して、新しいテーブルを作成します。次に、フィルターを見て、「InfoHasNotChanged」(または使用する任意の単語)の選択を解除します。

「rangetoreturn」と「Rangeofuniqueidtolookinto」は1つのテーブル(またはシート)からのものであり、「CellofUniqueID」は他のテーブルからのものです。

乾杯


ありがとう!最初の解決策は最も簡単なものかもしれませんが、それは動作しません:(または多分私はよく理解していなかったのでしょうか?)「delete duplicate」オプションはいくつかの行を削除し、両方のシートのすべての行を保持しますシート上に一意のデータを含む1つの列があり、他のすべての列には、同じデータ(たとえば、生年月日や年齢が同じ2人)の行が多数あります。
CILUEA

オプション2:返される範囲/検索する一意の範囲/同じ範囲を返すセルを含むセルの1つ
CILUEA

オプション2の@CILUEA、「rangeofreturn」は、戻す情報の範囲です。「Rangeofuniqueidtolookinto」は、文字通り一意のIDを検索する一意のIDの範囲です。「sameasRangeToReturnを含むOneOftheCell」は、持ち帰る情報と比較する情報であるため、異なる場合は通知されます。残念ながら、VBAを少し知らない限り、快適な答えはありません。
dmb

オプション1の@CILUEAでは、両方のテーブルから新しいテーブルを作成する必要があります。次に、重複を削除します。またCountIf、1つのオカレンスがある場合、情報が変更されていないことを意味する場合、2つのオカレンスで使用およびフィルタリングすることもできます。最後に、一意のIDで注文します。また、新しい列の列にフラグを投げるので、テーブルから情報が来たことがわかります。今、違いが何であるかを明確に見ることができます
-dmb

@Scott "Out of the Box" ... OOTBであるべき間違いを犯しました。申し訳ありませんが英語は私の第一言語ではありません。
dmb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.