你能在VBA excel中找到宏的特定值的行号吗?

时间:2009-12-31 02:00:44

标签: excel-vba vba excel

我正在尝试找到一个命令,该命令返回发生特定值的行的索引。另外,该值不能为空。

总共有3个工作表。工作表A包含一个包含所有值的列。工作表B有一个列,其值显示在工作表A中,列中包含该值的更多信息,我想将该信息复制到工作表C中。

说工作表A是(行代表空单元格):

a
b
c

在运行宏之前,工作表B看起来像这样:

a  12  32  
c  34  45
b  23  21

在运行宏之前,工作表C看起来像这样:

a
b
c
运行宏之后

和这样:

a  12  32  
b  23  21
c  34  45

宏的结构如下所示:

  • 如果工作表A中的值不为空,请查找与工作表“B”中的值对应的行。
  • 复制工作表B行中的信息。
  • 将其粘贴到工作表“C”中的第i行。

3 个答案:

答案 0 :(得分:1)

试试这个

Public Sub ProcessData()
Dim i As Long
Dim LastRow As Long
Dim RowNum As Long

    With Worksheets("C")

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = 1 To LastRow

            If Not IsError(Application.Match(.Cells(i, "A"), Worksheets("A").Columns(1), 0)) Then

                RowNum = Application.Match(.Cells(i, "A"), Worksheets("B").Columns(1), 0)
                Worksheets("B").Cells(RowNum, "B").Resize(, 2).Copy .Cells(i, "B")
            End If
        Next i
    End With

End Sub

答案 1 :(得分:0)

您是否看过Excel的VLookup功能?您可以使用它在工作表中查找值,然后从该行获取另一个值。 C中的每个单元格都可以使用VLookup从B中获取正确的值(如果不存在则为空白)。

答案 2 :(得分:0)

是的,我已经用VLOOKUP尝试了它,但我只是设法从数组中找到一个值而不是行的索引。

即 = VLOOKUP(1,A2:C10,2)