库存宏/条件格式

时间:2018-09-24 15:04:21

标签: excel vba excel-vba conditional-formatting

我正在进行一个项目,在该项目中我绘制了房屋存货位置地图。在一张纸上是地图,在另一张纸上是没有从查询中拉出 X 天的库存。我想要做的是用红色突出显示地图上的位置,该红色对应于包含旧库存的位置。

每个示例:

Map_Locations

Old_Inventory_With_Location

我尝试使用条件格式来执行此操作,但无法提出公式来完成此操作,我还编写了以下代码,希望获得相同的结果而没有成功(运行此操作会导致excel崩溃):

Sub Highlight()

Dim Locations As Range
Dim Old_Inv As Range
Dim MyRange As Range
Dim MyRange2 As Range

Set Locations = Worksheets("Sheet3").Range("C4:CD71")
Set Old_Inv = Worksheets("Sheet2").Range("C2:C20000")

For Each MyRange In Locations
    For Each MyRange2 In Old_Inv
        If MyRange.Value = MyRange2.Value Then
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorDark2
            End With

        End If

        Next MyRange2
        Next MyRange

End Sub

请注意,我对VBA的使用经验很少,如果这与实际情况不符,对不起。任何想法或建议将不胜感激

1 个答案:

答案 0 :(得分:0)

对于条件格式:

  • 选择位置表的单元格C4
  • 打开条件格式, 管理规则,新规则
  • 选择“使用公式来确定单元格 格式化”(最后一个选择)
  • 在框中输入以下公式 “在该公式为真的地方设置值的格式”(请注意,您可能有 如果您使用不同的语言设置来更改公式)
    =NOT(ISNA(VLOOKUP(C4, Sheet2!$C$2:$C$2000,1,FALSE)))
  • 单击格式按钮以选择所需的颜色(在“填充”选项卡上)
  • 按两次“确定”,然后在字段“适用于”中输入=$C$4:$CD$71

公式的说明:

VLOOKUP将在Sheet2(第二个参数)的给定范围内搜索单元格C4(第一个参数)的值。如果找到了确切的值(第四个参数必须为1),它将返回该值(公式中的第三个参数FALSE告诉您)。

如果找不到该值,则excel返回#NA,该值由周围的IsNA函数检查。因为这样会格式化列表中值 not 的单元格,所以用NOT-函数将整个内容包围起来,该函数将还原结果。