【问题标题】:Inventory Macro / Conditional Formatting库存宏/条件格式
【发布时间】:2018-09-24 15:04:21
【问题描述】:

我正在执行一个项目,在该项目中我构建了一张房屋库存位置地图。一张纸上是地图,另一张纸上是从查询中提取的 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 的经验很少,如果这离题了,请见谅。任何想法或建议将不胜感激

【问题讨论】:

  • 不用嵌套循环,只需遍历您的Locations 范围并使用Match 函数(使用WorksheetFunctions 调用它)检查它是否存在于Old_Inv 中。如果Match返回一个数字,将颜色改为红色

标签: vba excel conditional-formatting


【解决方案1】:

对于条件格式:

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

公式解释:

VLOOKUP 将在 Sheet2(第二个参数)的给定范围内搜索单元格 C4(第一个参数)的值。如果找到确切的值(第 4 个参数必须是 FALSE),则返回此值(公式中的第 3 个参数 1 说明了这一点)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多