2

同じ列の色を持つ特定の値のすべての複製が必要です。これは、特定の値、対応する列の値などにいくつの複製があるかを見つけるのに役立ち ます。サンプル Excelを見つけてください。条件付き書式を設定し、重複を強調表示すると、値に関係なくすべての重複に同じ色が表示されます。これは目的を解決しません。また、Excel で重複する値を区別する他の方法がある場合は提案します。

4

1 に答える 1

2

条件付き書式を使用して目的を達成する方法はありませんが、次のマクロを使用すると目的が達成されると思います。一意の値のディクショナリを構築し、それぞれにランダムな色を割り当てます。次に、一致させて重複に対して再利用します。

' Base function that can be used for different columns.
Sub colorDistinctInColumn(ByVal columnLetter As String)
    Dim lastRow As Integer
    Dim i As Integer
    Dim dict
    Dim currentCell As Range
    Dim columnNumber As Integer

    ' Create a dictionary to hold the value/colour pairs
    Set dict = CreateObject("Scripting.Dictionary")

    ' Find the last-used cell in the column of interest
    lastRow = ActiveSheet.Columns(columnLetter).Cells.Find( _
        "*", _
        SearchOrder:=xlByRows, _
        LookIn:=xlValues, _
        SearchDirection:=xlPrevious).Row

    ' Pick columnNumber using the given column letter
    columnNumber = ActiveSheet.Columns(columnLetter).Column

    ' Loop through all of the cells
    For i = 1 To lastRow
        Set currentCell = ActiveSheet.Cells(i, columnNumber)

        ' See if we've already come across the current value
        If Not dict.exists(currentCell.Value) Then

            ' This value has not been encountered yet,
            ' so store it and assign a random colour
            dict.Add currentCell.Value, RGB(Rnd * 255, Rnd * 255, Rnd * 255)
        End If

        ' Set the colour of the current cell to whichever colour
        ' has been stored for the current cell's value
        currentCell.Interior.Color = dict(currentCell.Value)
    Next i

    Set dict = Nothing
End Sub

' Actual Macro that will run in Excel
Sub colorDistinctInColumnA()
    Call colorDistinctInColumn("A")
End Sub
于 2012-12-02T04:12:44.427 に答える