プロが教える店舗&オフィスのセキュリティ対策術

【Excel2010】Sheet1,Sheet2に同様の表があります。
◆2行目以降で、それぞれ『同じ行』のセルに1つでも異なる値があれば、
 その行のチェック欄(添付の表ですとE列)に「1(FLASEでも可)」と表記
◆『同じ行』のすべてのセルが完全に一致している場合はチェック欄は空欄のまま

という方法があれば教えていただけますでしょうか。


添付の表を例にすると、異なる値(ピンク塗りつぶし部分)がある行だけ
一気にフィルタで抽出できるキーが欲しいのです。

『2つのシートを比較し、違うセルに色をつける』
https://www.excelspeedup.com/shi-tohikaku/

現在は上記の方法をお借りして値が違うセルに色付けして作業しているのですが、
実際の表は200列、7000行ほどあり、
チェックする頻度もそれなりに多いので目視には限界を感じております。

せめて異なる値がある行だけを抽出できれば、
現在の方法と組み合わせてもっと作業を効率化できると思い、
お力をお借りしたくどうぞよろしくお願い致します。

または、もっと良いアイディアがありましたらご教示いただけると幸いです。

関数やマクロは方法さえいただければ自分で改変して適用させることは可能です。
お手数をお掛けしますがよろしくお願い致します。

「2つのシートを比較し、異なる値がある行を」の質問画像

A 回答 (6件)

E2セルに次の式を入力して、配列数式で確定(Ctrl+Shift+Enter)し、下にオートフィルでコピーしてみて下さい。



=AND(Sheet1!A2:C2=A2:C2)
    • good
    • 1
この回答へのお礼

配列数式という存在を初めて知りました…!感動してます。
これならExcelに不慣れな職場の人でも数秒で設定できそうです!

複雑な数式だと修正する時に関数を読み解くのが大変なので、
職場で複数の人間が使用するのを前提に考えて、
ベストアンサーに選ばせていただきます。

的確なご回答本当にありがとうございました。

お礼日時:2018/10/07 02:35

こんばんは!



>実際の表は200列、7000行ほどあり、
というコトなので、VBAでの一例です。

元データはSheet1とSheet2にあり、Sheet3に1セルでも違う行を表示するようにしてみました。
両シートとも行数・列数は同じだという前提です。
尚、1行目は項目行でデータは2行目以降にあるとします。

標準モジュールにしてください。

Sub Sample1()
 Dim i As Long, j As Long, k As Long, cnt As Long
 Dim lastRow As Long, lastCol As Long
 Dim wS1 As Worksheet, wS2 As Worksheet
 Dim myR1, myR2
  Set wS1 = Worksheets("Sheet1")
  Set wS2 = Worksheets("Sheet2")
  Application.ScreenUpdating = False
   With Worksheets("Sheet3")
    .Cells.ClearContents
    .Cells.Interior.ColorIndex = xlNone
    lastRow = wS1.Cells(Rows.Count, "A").End(xlUp).Row
    lastCol = wS1.Cells(1, Columns.Count).End(xlToLeft).Column
    Range(.Cells(1, "A"), .Cells(1, lastCol)).Value = wS1.Range("A1").Resize(, lastCol).Value
     myR1 = Range(wS1.Cells(2, "A"), wS1.Cells(lastRow, lastCol))
     myR2 = Range(wS2.Cells(2, "A"), wS2.Cells(lastRow, lastCol))
     cnt = 1
     For i = 1 To UBound(myR1, 1)
      For j = 1 To lastCol
       If myR1(i, j) <> myR2(i, j) Then
        cnt = cnt + 1
        For k = 1 To lastCol
         .Cells(cnt, k) = myR2(i, k)
          If .Cells(cnt, k) <> myR1(i, k) Then
           .Cells(cnt, k).Interior.ColorIndex = 6 '//←違うセルのみ「黄色」に色付け//
          End If
        Next k
         Exit For
       End If
      Next j
     Next i
     .Activate
   End With
  Application.ScreenUpdating = True
   MsgBox "完了"
End Sub

※ コードは長いですが、極力時間短縮するようにしてみました。m(_ _)m
    • good
    • 1
この回答へのお礼

色付けまで…!本当に助かります!!
どうしても膨大な量になるので自動化できるのはありがたいです。
実際の表と照らし合わせて正しく動くよう適用させてみます。
職場でマクロをいじれる人間が少ない上に、
列や項目行が増減することもあるので、私以外人が使用する際、
少し不安があるのですが、似たような表チェックで変動がないものがあるので
そちらで使用させていだきたいと思います。ありがとうございました!!

お礼日時:2018/10/07 02:29

おそらく、データはD列以降にもあるという想定で、その場合に都合のよいやり方を紹介します。


なお、データ列数と同数の作業列が必要です。
データ列が多い場合には範囲を広げてください。(範囲修正と作業列のコピペでできます)

※チェック用列の表示がサンプルとは違っていて、TRUEが相違なし、FALSEが相違ありです。必要に応じて適当に修正ください。
スキルはある方のようですので、あえてやり方は書いていません。

◆手順(添付図も参照です)
1.E2セルに『=AND(F2:H2)』を入力する
2.F2セルに『=EXACT(Sheet2!A2,Sheet1!A2)』を入力する
3.F2セルをコピーしてG2~H2セルに(横方向に)貼り付ける
4.E2~H2をコピーしてデータが存在する行すべてに(下方向に)貼り付ける

5.1行目を行選択する
6.メニュー → データ → フィルタ
7.E1セルの▼マークをクリック → FALSEのみチェックをつける → OK

※手順5~7はオプションで、相違がある行のみを表示させます。そういう目的がないなら不要です。
「2つのシートを比較し、異なる値がある行を」の回答画像4
    • good
    • 1
この回答へのお礼

こんなやり方があるんですね!!
自分では考えつかないものなので大変参考になりました。
EXACTは初めてなので実際試してみて面白かったです。
ぜひ今後も活用させていただきます。
ありがとうございました!

お礼日時:2018/10/07 02:18

次式を入力した Sheet2 のセル E2 を下方にオートフィル


=IF((Sheet1!A2=A2)*(Sheet1!B2=B2)*(Sheet1!C2=C2),"",1)
または
=NOT((Sheet1!A2=A2)*(Sheet1!B2=B2)*(Sheet1!C2=C2))
    • good
    • 1
この回答へのお礼

列の少ない表なら効力すごそうです!
こんかいは終わりの見えない式になりそうなので
別表を作成するときに活用させていただきます!
ありがとうございました。

お礼日時:2018/10/07 02:15

Sheet2の対象のセルに対して条件付き書式で


「数式を使用して、書式設定するセルを決定」
をえらび、
数式に
 =A1<>Sheet1!A1
を指定し、セルの修飾を決めれば良いと思う。

・・・
該当するセルに対して1つずつ条件式を入力するのがめんどくさい?
そんなことはない!
A列からC列を選んで上記の数式を入れればよいのです。
範囲を選択すると、選択された範囲の左上が入力状態になります。(この例ではA1セル)
この状態で「A1」と指定した数式は、A2セルでは「A2」、B2セルでは「B2」に置き換わるので、
1つずつ入力する手間はない。
横着したい人向けのテクニックです。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
今回は修飾に関しては問題ないのですが、
横着したい代表のようなものなので別表作成時は
ぜひ活用させていただきます!

お礼日時:2018/10/07 02:15

文字列結合して比較、じゃダメなの?

    • good
    • 1
この回答へのお礼

文字列結合というアイディアに目から鱗でした。
CONCATENATE(B1,B2,B3…)と200列を1つずつ繋げていく感じでしょうか。

CONCATENATEでの結合上限やセルの文字数制限にひっからないか
ドキドキしますが試してみます!ありがとうございました。

お礼日時:2018/10/07 02:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!