業務改善

【エクセル】2つのデータを見比べるというメンドウな作業を自動化

データ入力をしていると時々あるのが「2つのエクセルシートの見比べ」です。

AとBのシートを見比べて、違いがないか確認するという「とても単純な作業」ですが、実際にやってみるととても大変です。

データの数だけ「見比べる」という作業を続けないといけないので、長時間パソコンの画面を見ることになります。

長時間同じ姿勢なので、眼だけでなく体にもダメージが大きいです。


「できればシートの見比べ作業をラクにしたい・・・」


今回はそのような作業をラクにするエクセルワザを紹介します。


こんな方におすすめ

  • シートを見比べる作業を任されている。
  • エクセルワザを身に付けて作業効率を上げたい

エクセルシートの見比べ作業はとてもたいへん

仕事をしていると、エクセルシートのデータをコピーすることがあります。

「データ変更前に念のためシートをコピーして作成」「先月のデータをコピーして、今月の報告書を作成する」など、その目的はさまざまです。


手軽にシートをコピーできるのは便利ですが「どのシートが最新のものか分からなくなってしまう」ことも・・。


それ以外にも、他の人から「この2エクセルデータに違いがないか確認してもらえない?」など頼まれることがあるかもしれません。


ひとつずつ気合で見比べることもできますが、確認作業が頻繁に発生することになると「他の業務を行う時間を奪われたり」「体力を余計に消耗したり」と悪い流れになってしまいます。

もし、そのような作業を任されたときは「気合で一件ずつ見比べる作業」を脱出したほうがいいです。

データの見比べ方法

複数のエクセルシートのデータを見比べる方法はいくつかあります。

データを見比べる方法

  • 気合で一件ずつ目で確認
  • エクセル関数で確認
  • 自動確認プログラムを作る


順番に紹介していきます。

気合で一件ずつ目で確認

文字通り「気合で一件ずつデータを確認」していきます。


事前準備は「エクセルブックを開くだけ」なので、確認をする件数が非常に少ない場合(10件くらい)の場合はいいかもしれません。


ただ、件数が多くなればなるほど「目の疲れ」などの体へのダメージ、「集中力低下による確認漏れ」が発生します。


一件でも確認漏れが見つかった場合は「再度エクセルのデータを目で確認する」必要が出てくると思いますので、おススメできません。


メモ

エクセルに慣れていない頃は、この方法でデータの確認をしていました。

非常に疲れるだけでなく「ミスをしてはいけない・・」と思いながら「限られた時間での確認で焦る気持ち」で作業をしていたので、ストレスを感じることが多かったです・・・。

エクセルに慣れてくると、このような確認方法はしなくなりましたが、正直この方法はもうやりたくないです・・・・。


エクセル関数で判定する

「気合で一件ずつデータを目で確認は、非効率で体にもよくない・・」

「でも、エクセルのワザにあまり詳しくない・・・」

そんな方におススメなのが「エクセル関数を使ったデータの見比べ方法」です。

この場合にオススメ

  • エクセルがニガテ
  • 同じシート内の2つのデータを調べる
  • 手っ取り早く知りたい


具体的にはこの2つの方法があります。

エクセル関数ならコレ

  • 引き算
  • EXACT関数


順番に紹介していきます。

引き算

引き算は文字通り「エクセルの計算式」です。


例えば「A1セルの値とB1セルの値が等しいか確認したい場合」は、C1セルに以下の数式を入力します。

=A1-B1


(当たり前ですが・・・)A1セルの値とB1セルの値が等しい場合は、引き算の計算式を入力したC1セルの値は「0(ゼロ)」になります。
※もし、0以外の結果になった場合は、値が等しくないのですぐに分かります。

2つのデータの数字が等しいか確認したいときは、この方法が一番お手軽です。

ちなみに、数式に加えて「フィルタ」機能を使えば、さらに効率的に作業ができます。

フィルタで確認

計算式(引き算)を入力した後は

  • 列にフィルターをかける
  • フィルタの候補のうち0以外のものを表示

とすることで、数値が異なるデータだけ抽出することができます。

また、2つの値(数字)がどのくらい違うのか確認ができるので、数値を扱う方にとっては便利な方法です。


数字しか使えない

「引き算を使って値の一致を確認する方法」は、検索対象が数字の場合に限定されます。

もし、文字列の比較を行いたい場合にはこの方法では解決しません。

EXACT関数

たくさんあるエクセル関数の中で「EXACT関数」を使うと2つのセルの値が一致しているかどうか判定できます。


やり方はかんたん

A1セルとB1セルの値を比較する場合、C1セルに以下の数式を入力します。

=EXACT(A1,B1)


関数の結果はこのようになります。

値が同じ場合

TRUEと表示される。


値が異なる場合

FALSEと表示される。


「計算式の作り方」と「表示される結果」が分かればすぐに使えるようになります。


ポイント

EXACT関数は「数字」「文字」の両方の場合に使えます。

「とりあえず、値が同じなのか、違うのか知りたい!という場合に最適な方法です。


注意

EXACT関数の結果は「TRUE」「FALSE」のいずれかだけなので、「何が違うのか」は自分で確認しないといけません。

また、データを確認するために列を挿入するなど「加工」が必要になるので、データの書き換えをしてしまわないように注意が必要です。


エクセルVBAを使う方法

エクセルVBAを使うことで2つの値が一致しているかどうか調べることができます。


この場合にオススメ

  • 確認する回数が多い
  • データ数も多い
  • 別のシートとの比較をしたい


エクセルVBAは、最初にプログラムを作るのはたいへんですが、一度作ってしまえばあとは「ボタン一つで作業が終わる」ので時短になります。


エクセル関数だと「データ確認のために列を追加する」など、シートの修正が必要ですが、エクセルVBAはその必要もありません。

プログラムはこちら

2つのデータを見比べるときに便利なプログラムはこちらです。


Option Explicit

Sub 2つのデータ比較()
'最終行、最終列を入れる変数を作成
Dim lastRow As Long, lastColumn As Long, rowNum As Long, columnNum As Long
    
'最終行、最終列を定義
lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
    
    
'比較する値の変数を作成
Dim atai1 As String
Dim atai2 As String

'比較判定を入れる変数を作成
Dim resut As Variant

    
'列の値を確認する。
For columnNum = 1 To lastColumn


    '行の値を比較する
    For rowNum = 1 To lastRow
        'シート1、シートの2値を変数に格納する。
        atai1 = Sheet1.Cells(rowNum, columnNum)
        atai2 = Sheet2.Cells(rowNum, columnNum)
        
        
        resut = StrComp(atai1, atai2)
        
        '値が異なる場合は対象のセルに色を付ける
        If resut <> 0 Then
            Sheet1.Cells(rowNum, columnNum).Interior.ColorIndex = 3
            Sheet2.Cells(rowNum, columnNum).Interior.ColorIndex = 3
        End If
    
    Next rowNum


Next columnNum
    
MsgBox "確認が終わりました"
    
End Sub


このプログラムがやっていることはこちらです。

プログラムがやっていること

前提として「シート1」と「シート2」の構造が一緒である必要があります。

  1. シート1を見て「検索範囲」を指定する。
  2. (3~7を繰り返す)
  3. シート1の値を取得
  4. シート2の値を取得
  5. 【2】と【3】を比べる
  6. もし同じだったら何も処理をしない
  7. もし違う場合は対象セルに色(今回は赤)を付ける
  8. 処理が終わったら「確認が終わりました」とメッセージを表示する。


このプログラムがやっていることは「自分で2つのセルの値を見比べた時に行っていること」と同じだと思います。

エクセルVBAは「自分でやっている処理をエクセルに指示する」のが特徴だと思います。


なので、自分でできることは「エクセルVBAプログラムに書き出すこと」ができ、「自動化すること」ができます。


先ほど紹介したプログラムを実際に動かすとこのようになります


左が【シート1】、右が【シート2】です。

シートのコピーをした後に、一か所データを入れ替えました。
(ぱっと見た感じでは分からないかもしれません)

プログラム実行前

この状態でプログラムを動かしてみます。

その結果がこちら

プログラム実行後

データが異なる部分のセルに色(この場合は赤)が付きました。


セルに色が付けば「どこが違っているのか」がすぐに分かります。


今回は一か所だけデータを入れ替えたので気になりませんが、実際に確認作業をする場合は「異なるデータがないかもしれないし、複数あるかもしれない・・」という状況の中で確認作業をすると思います。

なので、気合で確認するには時間も手間もかかります。

所要時間は?

「データの確認作業を自動化するプログラムは便利」と思うと同時に「どのくらい時間がかかるのか」も気になると思います。

今回のプログラムのデータ量はこのような感じです。

  • A列:6697行
  • B列:6697行
  • C列:6697行
  • D列:35行
  • E列:35行
  • F列:35行

分量としてはあまり多くありませんが、一件ずつ目で確認するにはちょっと大変な量だと思います。

(かなりざっくりですが・・)かかった時間は「1秒以下」でした。

※1秒になる前に集計が終了するくらいでした。

なので、大量のデータを比較した場合もすぐに終わると思います。


プログラム作成にかかった時間は?

今回のプログラム作成にかかった時間は1時間ほどでした。

昔に苦労したメンドウな業務を思い出して「プログラムで作れるのでは?」と思い、その勢いで作ったものです。


初めてエクセルVBAに挑戦するときのレベル感だと、かなりの時間がかかってしまっていたかもしれませんが、基本を少しできるようにすれば普段の業務をどんどん自動化できるようになります。

最初は大変ですが

  1. エクセルVBAの勉強をする
  2. プログラムを作ってみる
  3. 効率化して空いた時間で別のプログラムを作る

この流れを作れるようになると、自分の時間ができるだけでなく「自分の価値」を高めることができると思います。


最近では書籍以外にもYoutubeUdemy、オンラインプログラミングスクールなど、手軽に勉強をできるようになりました。
(インターネットで動画を見ながら学習をできるので、コロナ渦でも安心です)



>>>UdemyでエクセルVBA講座を見てみる


こちらのプログラミングスクールは、VBAコースが用意されているようです。


>>>1st stepのVBA講座を見てみる


「教材は自分で用意して、わからないところだけ聞きたい」という方はこちらのスクールもいいかもしれません。


>>>VBAのレッスン、Q&Aは対応しているようです。(自社教材はなさそう)


「VBA講座以外にPythonも話題になっているし、気になる・・」という方はこんなサービスもありました。


あとがき

今回は2つのデータの違いを自動でチェックする方法を紹介しました。


知識がないとどうしても「気合で一件ずつ目で確認」という行動に走ってしまいがちですが、エクセルの知識が付いてくれば業務を効率化できるようになります。

メンドウで効果の薄い仕事を任されてしまった場合は、可能な限りパソコンに任せてしまうのがオススメです。


もし、今回紹介したプログラムで「エクセルVBAおもしろそう」と思っていただけると嬉しいです。

最近ではインターネットを使った学習ツールが増えてきました。

自宅時間を有効活用してスキルアップをすれば、できることがどんどん広がっていきます。

-業務改善
-,