[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『重複する値に色を付けたい』(さんま)
エクセルの重複している値に色を付けたいです。
VBAを作成しましたが、実行すると空白セルが色が染まってしまうだけです。
どこを直せばいいのでしょうか???
それとC列の37行め迄となっていますが、これを最終行まで適用するにはどうしたらよいでしょうか???
Sub 重複行を色付け()
For i = 1 To Sheets.Count
Sheets(Sheets(i).Name).Select
Call 重複を探す
Next i
End Sub Sub 重複を探す()
Dim RetRange As Range
Range("C6:C37").Select
For i = 6 To 37
Set RetRange = Selection.Find(What:=Cells(i, 3).Value, _
after:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
If Not RetRange Is Nothing Then
If RetRange.Address <> Cells(i, 3).Address Then
RetRange.Interior.ColorIndex = 6
Cells(i, 3).Interior.ColorIndex = 6
End If
End If
Next
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
コードとしては無駄がたくさんある記述になっていますが、色つけということに関しては 重複するセルには色が塗られますよ。 空白セルにも色が塗られますけど。
空白セルを除外したいなら For i = 6 To 37 の次に If Not IsEmpty(Cells(i, 3).Value) Then といったものをいれて 値があるものだけを検索対象にしたらいいですね。
また、C6からC列データ最終セルまで と規定するなら Range("C6",Range("C" & Rows.COunt).End(xlUp)).Select
として試してください。
(β) 2016/03/30(水) 09:58
上級者から見れば私のコードも無駄が多いと思われそうですが・・・
Sub 重複行を色付け()
Dim i As Long, r As Long, LastRow As Long
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
With Sheets(i)
LastRow = .Cells(Rows.Count, 3).End(xlUp).Row
For r = 6 To LastRow
If Application.CountIf(.Range("C6:C" & LastRow), .Cells(r, 3).Value) > 1 Then .Cells(r, 3).Interior.ColorIndex = 6
Next
End With
Next
Application.ScreenUpdating = True
End Sub (se_9) 2016/03/30(水) 10:04
私なら素直に条件付き書式で
Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
With ws.Range("c6", ws.Range("c" & Rows.Count).End(xlUp))
.FormatConditions.Delete
.FormatConditions.Add 2, , "=countif(" & .Address & ",c6)>1"
.FormatConditions(1).Interior.Color = vbYellow
End With
Next
End Sub
(seiya) 2016/03/30(水) 10:14
皆さま様の方法をそれぞれ試したのですが、どれも思った通りに出来ました。
前回全シートに適用するVBAで
For i = 1 To Sheets.Count
を使用して作成したのですが、どうしても全シートに適用できなかったんでこの様な形にしてみたんです。
でもse_9様のVBAではうまく動作しました。
有難うございました。
seiya様、条件付き書式でもできるんですね(^0^)!!
勉強になりました。
皆さま有難うございました。
(さんま) 2016/03/30(水) 10:23
無事解決したようなのでもう見ていないかもしれませんが
>どうしても全シートに適用できなかったんで
Sheets(Sheets(i).Name).Select Call 重複を探す
このコードでは1枚目のシートを選択したら「重複を探す」コードに飛んでしまうので 当然2枚目以降の処理はされません。あと今回のこととは関係ありませんが Sheets(Sheets(i).Name).Select は Sheets(i).Select でもいいと思います。 (se_9) 2016/03/30(水) 10:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.