基于重复值的颜色行 – excel vba

我试图简化我每周收到的我的团队旅行计划的excel文件。

它有团队成员的姓名,航class号和到达时间。

我有团队成员有时在不同的航class上进来。 我喜欢直观地看到谁会在什么时间到达,所以我可以轻松地做出租车安排。 如果一个小组在1点6分抵达,我会在6点55分同时强调这些,我会重点介绍这些。 我们可以有多达15个不同的飞行计划。 我目前使用条件格式来识别常见的,但是由于我每周都会为50个人做这个事情,所以通过vba模块来运行是很方便的。 (我已经有一个模块重新格式化一些列/行)。

我已经看过重复代码标识符,这是我的主要资源比较date/时间,但没有运气到目前为止。

我现在做的照片: 突出显示

我编码的方式是将数据格式化成表格,然后计算'Flight#'列中的唯一值。 数据然后被这些值依次过滤,并且行从预定的调色板(可以被改变)着色。

Sub FormatDuplicateRows() Dim wsFlight As Worksheet: Set wsFlight = Worksheets("Flights") On Error Resume Next If Not wsFlight.ListObjects("Flights") Is Nothing Then wsFlight.ListObjects("Flights").Unlist On Error GoTo 0 wsFlight.ListObjects.Add(xlSrcRange, Range("A1").CurrentRegion, , xlYes).Name = "Flights" Dim tblFlight As ListObject: Set tblFlight = wsFlight.ListObjects("Flights") Dim Fld As Long: Fld = tblFlight.ListColumns("Flight #").Range.Column Dim Dict As Object: Set Dict = CreateObject("Scripting.Dictionary") For Each Cell In tblFlight.ListColumns("Flight #").DataBodyRange If Not Dict.Exists(Cell.Value) Then Dict.Add Cell.Value, Cell.Address Next Dim Colours() As String: Colours = Split("&HD9E9FD,&HF3EEDB,&HECE0E5,&HDDF1EA,&HDCDDF2,&HCCFFFF", ",") Dim i As Long: i = 0 With tblFlight .TableStyle = "TableStyleLight1" .ShowTableStyleRowStripes = False For Each Value In Dict.Keys .Range.AutoFilter Field:=Fld, Criteria1:=Value .DataBodyRange.SpecialCells(xlCellTypeVisible).Interior.Color = Colours(i) i = IIf(i = UBound(Colours), 0, i + 1) Next Value .Range.AutoFilter Field:=Fld End With End Sub 

您可以将调色板更改为您的要求,一旦所有颜色使用过一次,调色板将自动重复

*********更新**********

为了获得数组的颜色值,我编码了以下函数

 Public Function GetColour(rngSrc As Range) As String GetColour = "&H" & Application.WorksheetFunction.Dec2Hex(rngSrc.Interior.Color) End Function 

然后,在Excel工作簿中,我只是将公式= GetColour(“A1”)放在“A2”中,并沿着第一行改变了一些单元格的填充颜色,然后通过拖拽公式得到填充颜色的hex值