早上好/下午/晚上到所有人:)
我第一次来这里....................:)
我在“条件格式”中使用此代码
=AND(ISNUMBER(SEARCH($B$3,A6)),$B$3<>””)
因此我只能在屏幕截图上突出显示单元格(每当在B3上键入文本时,它会自动突出显示包含Cell的屏幕截图)但我想要的是它只突出显示单元格但不能跳转当我在搜索B3框中键入“”text“”时(选择)单元格。
例如:在屏幕截图中我键入DW353,它在A18 Cell No.上的Redcolor中突出显示,但是如果我键入其他文本为DW364,365,并且在A24,A25上并继续向下,则仅突出显示特定的Cell我必须搜索(向上和向下滚动)以查看RED突出显示。我想要的是每当我在B3上键入“文本”时它突出显示并直接将包含单元格跳转为(查找和替换)。
先谢谢你,很抱歉很长的问题:)
答案 0 :(得分:0)
实现此类功能的最简单方法是使用VBA触发高级过滤器功能,以便隐藏所有其他行。
以下是:
这应该如下所示:
将此代码放在与每机器运动标签对应的工作表模块中(而不是标准代码模块中):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Input")) Is Nothing Then
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
Range("MyList").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("Criteria"), Unique:=False
End If
End Sub
End Sub
即。像这样:
现在,只要有人输入机器编号,工作表就会被过滤以显示感兴趣的行:
您可以在Daniel Ferry的优秀博客中找到一个有效的例子,链接如下: http://www.excelhero.com/blog/2010/07/excel-partial-match-database-lookup.html
查找他在标题--- UPDATE ---
下发布的第二个样本文件根据您的后续问题,可以调整此方法以搜索多个列。首先,这是命名范围的设置(包括输入单元格上方的一个名为“Header”的新范围):
......这是修改后的代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vRanges As Variant
Dim vItem As Variant
If Not Intersect(Target, Range("Input")) Is Nothing Then
On Error GoTo errhandler
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlManual
End With
'Clear any existing filter
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
'Cycle through the search arrays one by one, and run the advanced filter until you find a match
vRanges = Array("Range1", "Range2", "Range3", "Range4") '<<< Change these to match your range names
For Each vItem In vRanges
Range("Header") = Range(vItem).Cells(1)
Range(vItem).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("Criteria"), Unique:=False
If Range(vItem).SpecialCells(xlCellTypeVisible).Count > 1 Then Exit For
Next vItem
errhandler:
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlAutomatic
End With
End If
End Sub
这里有一些屏幕截图显示它在不同的列上匹配:
您可以格式化单元格B2,以便在需要时无法看到它。
我建议在设置“RangeX”命名范围之前,将工作簿中的不同输入区域转换为Excel表格(也称为ListObjects)。这是因为在幕后,表基本上是动态命名范围,自动扩展以适应新数据。因此,如果您随后手动设置指向“表”列的“命名范围”,则无需记住调整“命名范围”以处理新数据,因为“表”会自动为您执行此操作。见下图:
请注意,您可以使用功能区中的“表格样式”选项更改“表格”的格式,甚至可以完全关闭格式: