在某个列中存在该值时,我找不到突出显示某个范围内值的方法。
列O
具有可填充值的公式。这些值中的每一个都有自己的列,从R
开始。 O10
可以说“OD”。列S
在S8
中有一个标题为“OD”的列标题。它下面的大多数单元格都是空白的,但如果不是,它们会说“OD”,所以由于在O
列中找到“OD”,我希望列S
中的所有值都不为空是.style =“中立”。
O
的相关范围需要O8
到最后一行。搜索这些值的列将为R8:Last Column
。
我有一个不错的开始。我可以让它以我想要的方式高亮显示任何非空白值,但在更改样式之前,我无法确保该值在列O
中。
这是迄今为止的代码:
Sub HighlightCompGrid()
Dim FirstRow As Long, LastRow As Long, i As Long, x As Long, c As Range
Dim Selected As Range
Dim Grid As Range
FirstRow = Range("B:B").Find("ID", Range("B1")).Row
LastRow = Range("B:B").Find("End", Range("B8")).Row
i = Range("B" & FirstRow & ":B" & LastRow).Count
Set Grid = Range("R9", Range("R9").Offset(i - 1, i - 1))
Set Selected = Range("O9", Range("O9").Offset(i - 1, 0))
Selected.Select
For Each c In Grid
If c.Value = Selected.Value Then
Cells(c.Row, c.Column).Style = "Neutral"
Else 'Do Nothing
End If
Next c
End Sub
答案 0 :(得分:0)
你不需要一个宏。您可以使用名为条件格式的Excel功能。
只需在工作表中选择所需的列,在功能区中转到Home -> Conditional Formatting -> Highlight Cells Rules -> Equal To...
因为你不能在公式中什么都没有,只需输入任何东西。然后点击Home -> Conditional Formatting -> Manage Rules
在那里,更改它以使规则为=""
如果你真的需要一个宏,那么我会怎么做:
Sub styleEmptyCells()
Const FIRST_ROW as Long = 2
Const COLUMN_TO_CHECK as String = "O"
Dim i as Long
Dim lastrow as Long
lastrow = Range("A65535").End(xlUp).row
For i = FIRST_ROW to lastrow
If Range(COLUMN_TO_CHECK & i) = "" Then
Range(COLUMN_TO_CHECK & i).Style = "Neutral"
End If
Next
End Sub
答案 1 :(得分:0)
我在网上发现了一些我能够根据自己的需要进行修改的代码。与我试图通过的疯狂箍相比,它是如此简单。
以下是代码看起来像
的内容Sub HighlightCompGrid()
Application.ScreenUpdating = False
TransposeNames
FillDownFormats
'these two macros will "reset" the grid
Dim FirstRow As Long, lastRow As Long, i As Long, c As Range
Dim Selected As Range
Dim Grid As Range
FirstRow = Range("B:B").Find("ID", Range("B1")).Row
lastRow = Range("B:B").Find("End", Range("B8")).Row
i = Range("B" & FirstRow & ":B" & lastRow).Count
Set Grid = Range("R9", Range("R9").Offset(i - 1, i - 1))
Set Selected = Range("O9", Range("O9").Offset(i - 1, 0))
For Each c In Grid
If IsNumeric(Application.Match(c, Selected, 0)) Then
c.Style = "Neutral"
c.Borders.LineStyle = xlContinuous
End If
Next c
Application.ScreenUpdating = False
End Sub
它循环遍历Column O
中的每个值并检查我的列范围内的匹配(网格)以及何时执行...输入命令。