Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在VBA excel中使用宏找到特定值的行号?_Excel_Vba - Fatal编程技术网

是否可以在VBA excel中使用宏找到特定值的行号?

是否可以在VBA excel中使用宏找到特定值的行号?,excel,vba,Excel,Vba,我试图找到一个命令,该命令返回出现特定值的行的索引。此外,该值不能为空 总共有3张工作表。工作表A有一列包含所有值。工作表B有一列,列中的值显示在工作表a中,列中包含该值的更多信息,我想将这些信息复制到工作表C中 假设工作表A为(行表示空单元格): 在运行宏之前,工作表B如下所示: a 12 32 c 34 45 b 23 21 a b c a 12 32 b 23 21 c 34 45 在运行宏之前,工作表C如下所示: a 12 32 c 34

我试图找到一个命令,该命令返回出现特定值的行的索引。此外,该值不能为空

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

假设工作表A为(行表示空单元格):

在运行宏之前,工作表B如下所示:

a  12  32  
c  34  45
b  23  21
a
b
c
a  12  32  
b  23  21
c  34  45
在运行宏之前,工作表C如下所示:

a  12  32  
c  34  45
b  23  21
a
b
c
a  12  32  
b  23  21
c  34  45
在我运行宏之后如下所示:

a  12  32  
c  34  45
b  23  21
a
b
c
a  12  32  
b  23  21
c  34  45
宏的结构如下所示:

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

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

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

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

试试这个

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

@我把你的问题格式化了一点。请检查以确保我没有更改目的。为什么需要行索引?如果工作表C A1:A3有a,b,C,那么工作表C B1:B3将类似于VLOOKUP(A1,wkshtB!A1:wkshtB!c3,2),然后C1:c3将把索引移到3。我不确定VLookup是否允许您引用其他工作表,但如果不能,请将值复制到当前工作表中的另一个单元格并隐藏这些列。