如何使用公式填充变量

时间:2019-05-16 06:26:51

标签: excel vba variables

基本思想是进行搜索,这不仅会突出显示包含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中不起作用。

谁能阐明为什么它在那里失败?

1 个答案:

答案 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