基本的想法是有一个搜索,这不仅会突出显示列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:
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中使用forumal时,它工作正常,并显示正确的单元格引用,但它在VBA中不起作用。
有人能解释一下为什么它在那里失败了吗?
发布于 2019-05-16 14:42:03
您需要以正确的方式使用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 Subhttps://stackoverflow.com/questions/56162092
复制相似问题