是否可以在VBA excel中使用宏找到特定值的行号?
我试图找到一个命令,该命令返回出现特定值的行的索引。此外,该值不能为空 总共有3张工作表。工作表A有一列包含所有值。工作表B有一列,列中的值显示在工作表a中,列中包含该值的更多信息,我想将这些信息复制到工作表C中 假设工作表A为(行表示空单元格): 在运行宏之前,工作表B如下所示:是否可以在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
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”的第一行
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是否允许您引用其他工作表,但如果不能,请将值复制到当前工作表中的另一个单元格并隐藏这些列。