在Excel中过滤一列中的多种颜色



我一直在有条件地格式化表2(装运请求列表),这是镜像表1(主列表)的选择列。

-从表格2(发货请求列表),B列,单元格B2开始,有='主列表'!D2(从表1),并继续向下数百行

-该字段中的数据镜像单元格'主列表'!D2(表格1),可以是"开放";(或基于下拉列表的许多其他项目……没有公式)。我只对单元格说"打开"时会发生什么感兴趣。

-表1中的单元格D2具有以下条件格式,基于D2表示"Open"和主列表表中单元格V2中的日期。

=AND($V2<TODAY(),$D2="open") [turns purple]
=AND($V2-TODAY()>=0, $V2-TODAY()<=2,$D2="open") [turns red]
=AND($V2-TODAY()>=3, $V2-TODAY()<=4,$D2="open") [turns orange]
=AND($V2-TODAY()>=5, $V2-TODAY()<=7,$D2="open") [turns yellow]

当我尝试基于表2中的值的条件格式时,即通过值"Open"从表1镜像,颜色不正确

我尝试了各种方法。

方法1:将表2中的条件格式方程更改为引用表1中的单元格,而不是直接引用表2中的单元格。

方法2:试着在表格2中的条件格式方程中使用INDIRECT。但我不确定我这样做是否正确。

方法3:使用VBA代码在表1上创建一个UDF,将列D的颜色代码提取到相邻的列(C)中,然后根据该数字筛选表示紫色、红色、橙色和黄色的代码。(我不是在与VBA好,但我可以复制和粘贴一个模块,并按照说明。)

Function FindColor(n As Range) As Integer
FindColor = n.Interior.ColorIndex
End Function

在C列中,C2有=findcolor(D2),然后被拉下。这种方法给了我数字,但它给了我紫色、空白等相同的数字。非常不一致。

方法4:在新列C中,添加一个公式,使单词变成"紫色"、"红色"、"橙色"或"黄色"。根据条件格式公式中提到的条件出现。直到公式变得太复杂了我才算出来。到目前为止(甚至还没有添加橙色和黄色),但下面的公式没有返回"红色";当条件需要时:

=IF(AND($V662<TODAY(),$D662="open"),"purple",IF(AND($V662-TODAY()>=0,$V662-TODAY()<=2,$V662="open"),"red",""))

我想我已经接近最后一种方法了,但我意识到它有很多公式,将被添加到700多行,这将继续增长。

作为一种稍微不同的方法:您可以使用UDF来返回"color",然后根据返回值运行条件格式规则。

将其放入常规模块:

Function Classify(theDate, theStatus) As String
If theStatus = "open" Then   'check status
'If theStatus = "open" Or theStatus = "issue" Then
If Len(theDate) > 0 Then   'has a date?
Select Case theDate - Date
Case Is < 0: Classify = "purple"
Case Is >= 5: Classify = "yellow"
Case Is >= 3: Classify = "orange"
Case Is >= 0: Classify = "red"
End Select
End If
End If
End Function

在你的工作表中你会使用(例如)

=Classify($V662, $D662)

最新更新