1

列を調べて、列内の重複を強調表示しようとしています。レコード マクロを使用して必要なものを把握しましたが、これを多くの列に適用する方法がわかりません。多くの名前が繰り返されるため、すべての列を強調表示しても機能しません。リスト内で名前が複数回繰り返されるかどうかを調べる必要があります。

これは私がこれまでに持っているコードです:

Sub findDuplicates()
    Application.Goto Reference:="R3C18:R89C18"

    Application.Goto Reference:="R3C18:R88C18"
    Selection.FormatConditions.AddUniqueValues
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).DupeUnique = xlDuplicate
    With Selection.FormatConditions(1).Font
        .Color = -16751204
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 10284031
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Range("R21").Select
End Sub

これは、B3:OA3 から範囲内の各列を通過し、色とアルファベットで並べ替えるコードです。私の考えでは、このコードは列ごとに並べ替えられるため、既に並べ替えられている列内の重複を強調表示するためにコードを追加するだけで済みます。しかし、どうすればそれができるかわかりません。

Sub sortColorThenAlpha()
'sort by color then by alphabet

    Dim rngFirstRow As Range
    Dim rng As Range, rngSort As Range
    Dim ws As Worksheet

    Application.ScreenUpdating = False
    Set ws = ActiveSheet
    Set rngFirstRow = ws.Range("B3:OA3")
    For Each rng In rngFirstRow.Cells
        With ws.Sort

            Set rngSort = rng.Resize(86, 1) 'to row 88

            .SortFields.Clear
            .SortFields.Add(rng, xlSortOnCellColor, xlAscending, , xlSortNormal). _
                            SortOnValue.Color = RGB(198, 239, 206)
            .SortFields.Add Key:=rng, SortOn:=xlSortOnValues, _
                            Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange rngSort
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply

        End With
    Next rng
    Application.ScreenUpdating = True
End Sub

これは私が見ているものです。この黄色の条件付き書式は、行 3 から 88 までの各列に適用しようとしているものです。ここに画像の説明を入力

4

2 に答える 2

0

次のルールを使用した条件付き書式設定が機能しているように見えるため、VBA は必要ないようです。

=A1=VLOOKUP(A1,A2:A$99,1,FALSE) Applies to: =$A$1:$J$99
=A2=VLOOKUP(A2,A$1:A1,1,FALSE)  Applies to: =$A$2:$J$99

適合するように調整された参照を使用して。

于 2013-07-09T18:13:55.157 に答える