如何使用Excel宏查找和使用特定值的行号

时间:2017-04-12 18:37:18

标签: excel excel-vba vba

我知道这个问题已在这里的几个地方得到解决,但到目前为止都没有解决我的问题,我想不出任何其他的东西可以搜索。

具体来说,在Excel宏中,我需要在特定工作表上找到具有与变量匹配的值的单元格的行号。然后我需要使用该行号对该行中的另一个单元格执行操作。我正在寻找的值将在C列中,然后该操作将在A列中执行。

我尝试过这些解决方案,但还没有运气:

(?=^\S)[\W\w]*\S$

How to find the row number of a specific value in Excel using vbscript

我已经尝试将我的变量值粘贴到B1作为占位符,但我找不到在工作表的其他位置找到匹配值的方法(只有另外一个)。我试过了:

Public Const SKUVALUE As String = "$B$1"

但当然会返回带引号的字符串,而不是B1单元格的值。

如果能帮我解释一下我项目的大局,我会很乐意这样做,但这有点复杂。简而言之,我试图根据分配给每张纸上特定行的数值(SKU)将内容从一张纸带到另一张纸。由于在第一张纸上应用了过滤器,因此行号将不匹配。如果我可以在第二张纸上镜像这些过滤器,那么我就会知道行号,但这听起来像是一个噩梦。我无法开始思考如何去做。

我真的以此结束了我的智慧。任何建议将不胜感激。 谢谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用循环来完成此操作。根据您的数据,这应该有效。您没有提供有关要在A列中执行的操作或如何声明变量的详细信息,因此这是一个开始。

 Sub Macro1()
' This macro will loop through each row and look for your variable in column C if it finds your variable in column C it will then perform your action in column A of that same row.

Dim variable As String
variable = "insert value or cell here"

With Sheets("Sheet1")
    LR = .Cells(Rows.Count, "C").End(xlUp).Row
    For i = LR To 2 Step -1
        If .Cells(i, "C").Value = variable Then
            .Cells(i, "A").Value = "perform action here"
        End If
    Next i
End With

End Sub

答案 1 :(得分:0)

更新:我的问题是正确使用变量,解决方案似乎是:

Public Const SKUVALUE As String = "$B$1"
Public imageValue As Long
Public n As Long

然后:

Sub FindFirstInstance()
Dim ws As Excel.Worksheet
Dim FoundCell As Excel.Range
Dim imageValue As Long: imageValue = Range(SKUVALUE).Value
Set ws = ActiveSheet
Set FoundCell = ws.Range("C:C").Find(what:=imageValue, lookat:=xlWhole)
If Not FoundCell Is Nothing Then
    MsgBox (imageValue & " found in row: " & FoundCell.Row)
n = FoundCell.Row
MsgBox "n is " & n
Range("$C$1").Value = n
Else
MsgBox (imageValue & " not found")
End If
End Sub

我继续遇到的问题是工作表之间没有工作的全局/公共变量。这就是为什么我把n的值放到上面的C1中,所以我可以稍后抓住它。但我会继续努力。目前,我认为我有我需要的东西。非常感谢。