基本思想是进行搜索,这不仅会突出显示包含C列中特定值的行,而且还会带我到那里。我试图将条件格式与CTRL + F函数结合起来。
我的电子表格大约有6000行。
我尝试了各种各样的方法,但是我设法找到的最接近的方法是:
=MATCH($U$1, $C2:$C6000,0)
要让我得到该行中的文本与我在单元格U1中的“搜索框”中键入的值匹配的行。该单元格是我冻结的标题栏的一部分,因此始终在屏幕上可用。
这将返回我的搜索范围中的行,假设它是1175。由于我的标题行冻结,因此我的目标行最终将是实际电子表格中的1176行。我的目标是让Excel转到第1176行,突出显示该行,然后将其选择为活动行,以便我可以立即在该行上工作。
我使用以下公式生成实际的单元格引用:
=CONCATENATE("C",MATCH($U$1, $C2:$C6000,0)+1)
我的问题是,根据上述论坛的结果,我找不到一种使Excel跳至第1176行的方法。所以我的解决方案是在VBA中做一个简短的介绍:
Sub Go_To()
Dim Target_Cell As String
Target_Cell = CONCATENATE("C",MATCH($U$1, $C2:$C6000,0)+1)
Range(Target_Cell).Activate
End Sub
这行不通,我也不知道为什么。该变量似乎没有填充C1176。当我在Excel中使用该论坛时,它可以正常工作并显示正确的单元格引用,但在VBA中不起作用。
谁能阐明为什么它在那里失败?
答案 0 :(得分:0)
您需要以正确的方式使用WorksheetFunction.Match method。字符串在VBA中与&
串联:
Option Explicit
Public Sub JumpTo()
Dim MatchedRow As Double
On Error Resume Next 'next line throws error if no match is found
MatchedRow = Application.WorksheetFunction.Match(Range("U1"), Range("C2:C6000"), 0)
On Error Goto 0 'always re-activate error reporting
If MatchedRow <> 0 Then
Range("C" & MatchedRow + 1).Select
Else
MsgBox "'" & Range("U1") & "' was not found."
End If
End Sub