重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

【やりたい事】
画像をご覧ください

左にあるブックと同じデータが、右のブックにもあります
画像のように、右のブックの、左のデータと同じ部分に水色を塗りたい
※右のデータに水色にしたい

左と右のデータの値や件数、並び方は同じです
ただし、右のExcelには、3パターンの存在の仕方があります
1パターン目→沢山あるデータの1番下にある
2パターン目→沢山あるデータの1番上にある
3パターン目→沢山あるデータの真ん中辺にある
※上記3パターンは、画像の右3パターンの説明

また

左のExcelのパターンも画像のとおり2パターンあります
※いずれも、並び順、件数は同じ

コード or アドバイス ご存じの方、教えて下さい


例 下記のいずれかのパターンが発生します
  全部のパターンが1回で発生するという意味ではないです

左のエクセルパターン1 右のエクセル 画像の1番上のパターン

左のエクセルパターン1 右のエクセル 画像の1番下のパターン

左のエクセルパターン2 右のエクセル 画像の1番上のパターン


【左のリストの場所】【マクロが設置しているファイル】
C:\Users\user\Documents\総件数表示\リスト.xlsm

【右のリストの場所】
C:\Users\user\Documents\総件数表示\データ.xlsx

【左と右のExcelのシート名】
Sheet1

【水色】
XlRgbColor列挙→rgbAzure
値→16777200
#16進→#F0FFFF

「【マクロ】左のブックと右のブックにて、同」の質問画像
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (2件)

No1です。


>以下なのですが、A列のお客様番号のみ一致に変更したいのですが
>以下のように割愛すれば良いのでしょうか?
>【コード】
>key = ws1.Cells(row1, "A").Value
>key = ws2.Cells(row2, "A").Value

はい、それでOKです。
    • good
    • 1

以下のマクロを標準モジュールに登録してください。


左側と右側が同じデータかどうかは、
A列、B列、C列、D列が全て同じであれば、同じデータとして判定しています。


Option Explicit

Public Sub 同一データ検索()
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lastrow1 As Long
Dim lastrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim dicT As Object
Dim key As String
Set dicT = CreateObject("Scripting.Dictionary")
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set wb2 = Workbooks("データ.xlsx")
Set ws2 = wb2.Worksheets("Sheet1")
ws2.Cells.Interior.Pattern = xlNone
lastrow1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row
lastrow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
For row1 = 2 To lastrow2
key = ws1.Cells(row1, "A").Value & "|" & ws1.Cells(row1, "B").Value & "|" & ws1.Cells(row1, "C").Value & "|" & ws1.Cells(row1, "D").Value
dicT(key) = row1
Next
For row2 = 2 To lastrow2
key = ws2.Cells(row2, "A").Value & "|" & ws2.Cells(row2, "B").Value & "|" & ws2.Cells(row2, "C").Value & "|" & ws2.Cells(row2, "D").Value
If dicT.exists(key) = True Then
ws2.Range("A" & row2 & ":D" & row2).Interior.Color = rgbAzure
End If
Next
MsgBox ("完了")
End Sub
    • good
    • 1
この回答へのお礼

大変、実効性のあるコード、教授ありがとうございます

以下なのですが、A列のお客様番号のみ一致に変更したいのですが
以下のように割愛すれば良いのでしょうか?

※A列のみで良いのは、右のリストについては、お客様番号が重複
しないように、チェックしている為です。また、C列・D列は空白等
ある事があり、左と右のブックにおける完全一致は難しい為です
また、

【コード】
key = ws1.Cells(row1, "A").Value
key = ws2.Cells(row2, "A").Value

>A列、B列、C列、D列が全て同じであれば、同じデータとして判定しています。

ご指導、宜しくお願いします

お礼日時:2025/05/10 09:03

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A