• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロの書き方2)

マクロの書き方2

このQ&Aのポイント
  • Sheet2の同じ番号があった場合にSheet1のダブっている番号の横のB列セルを黒くする方法
  • Sheet1のA列の番号がSheet2のA列と重複している場合、Sheet1のダブっている番号の横のB列セルを黒くする方法
  • Sheet2に同じ番号があった場合、Sheet1のダブっている番号の横のB列セルが黒くなる機能

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! 前回は余計なお世話を焼いてしまったようですね! 昨日の方法でSheet2・A列にSheet1のデータが複数あれば単純にB列を黒くすれば良いだけですよね! (もちろんSheet1のB列セル内データはSheet2の最終データになってしまいます) ただ、黒いセルの場合はデータは関係なくSheet2に重複していることが判れば良い!という解釈での方法です。 昨日のコードに少しだけ手を加えます。 Sub test5() Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") Application.ScreenUpdating = False For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, 1) = ws2.Cells(j, 1) Then If ws2.Cells(j, 2) <> "" Then ws1.Cells(i, 2) = ws2.Cells(j, 2) Else With ws1.Cells(i, 2) .Value = ws2.Cells(j, 3) With .Font .ColorIndex = 3 .Bold = True End With End With End If End If Next j If WorksheetFunction.CountIf(ws2.Columns(1), ws1.Cells(i, 1)) > 1 Then ws1.Cells(i, 2).Interior.ColorIndex = 1 End If Next i Application.ScreenUpdating = True End Sub こんな感じがご希望だったのでしょうかね? 今回も的外れならごめんなさいね。m(_ _)m

MEGUMI19800214
質問者

お礼

めぐみです。 ありがとうございます、完璧でした。 非常に使いやすいです。 丁寧に、そして迅速にお応え下さり本当にありがとうございました。 後ほどベストアンサーとさせて頂きますね。 本当にありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >Sheet2にのA列は時々同じ番号が2つ,3つあることがあります。 とあります。 前回 → http://okwave.jp/qa/q7099523.html のコードでは最後のデータしか表示されませんので、 一つの案ですが・・・ Sheet2のA列にいくつ重複データがあっても構わないので、Sheet1のB列・C列・・・列にSheet2のデータを表示してはどうでしょうか? 今回もSheet2のB・C列のどちらかにデータが入っているとします。 C列データ表示の場合は赤文字・太字にしてみました。 Sub test3() Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") Application.ScreenUpdating = False For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, 1) = ws2.Cells(j, 1) Then If ws2.Cells(j, 2) <> "" Then ws1.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) = ws2.Cells(j, 2) Else With ws1.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) .Value = ws2.Cells(j, 3) With .Font .ColorIndex = 3 .Bold = True End With End With End If End If Next j Next i Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m ※ 当方をご指名のような感じの質問になっていますが、他の方はなかなか回答しづらいと思います。 おっさんをご指名していただくのはうれしいのですが・・・ 当方の方法がベストではありませんので、個人名を出さない方が 他の方々からの投稿があって、もっと良い方法が見つかるかもしれません。

MEGUMI19800214
質問者

お礼

めぐみです、早速のご連絡ありがとうございました。 試してみましたが重複するデータは最終的に重複していることが明確に分かるようにしたいのですが、頂いたマクロだと重複したデータがあった場合、最終結果が重複していることが分かりづらいです。 重複していることがはっきり分かるようになれば助かるのですが。 アドバイス頂きましてありがとうございます。 ぜひ、今後の参考にさせていただきたいと思います。 親身にご相談頂きまして本当にありがとうございます。

noname#157410
noname#157410
回答No.1

マクロでなくても IF(COUNTIF(A:A,A1)>1,"重複","")でいいのでは? マクロの方が効率悪い場合がありますけど。

関連するQ&A

専門家に質問してみよう