搜索代码中的增量行 Excel Vba
Increment row in search code Excel Vba
我遇到了 vba 不会增加行号的问题。我的 table 看起来像:
工作表 1
name value
aa 11
bb 12
cc 13
aa 14
cc 15
cc 16
aa 17
bb 18
aa 19
工作表 2
name
aa
bb
cc
我需要搜索每个特定值,如果找到,则将相邻单元格复制到 sheet2 右侧的下一个搜索值。这是代码,但问题在于行增量,所有搜索到的值都在一行中(变量 k 不起作用)。
Sub finall()
Dim cable As String
Dim finalrow1 As Integer
Dim finalrow2 As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
l = 2
k = 2
finalrow2 = Sheets("Sheet2").Range("A1000").End(xlUp).Row
finalrow1 = Sheets("Sheet1").Range("A1000").End(xlUp).Row
For j = 2 To finalrow2
cable = Sheets("Sheet2").Cells(j, 1).Value
For i = 2 To finalrow1
If Cells(i, 1) = cable Then
Sheets("Sheet1").Cells(i, 2).Copy
Sheets("Sheet2").Cells(k, l).End(xlUp).Offset(1, 0).PasteSpecial
l = l + 1
End If
Next i
k = k + 1
Next j
End Sub
这只是最终示例,我想将此代码应用到 table 50-60k 行。
最终 table 应如下所示:
name
aa 11 14 17 19
bb 12 18
cc 13 15 16
感谢
最终代码如下
Sub finall()
Dim cable As String
Dim finalrow1 As Long
Dim finalrow2 As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
l = 2
k = 2
finalrow2 = Sheets("Sheet2").Range("A1000").End(xlUp).Row
finalrow1 = Sheets("Sheet1").Range("A1000").End(xlUp).Row
Worksheets("Sheet2").Select
For j = 2 To finalrow2
cable = Sheets("Sheet2").Cells(j, 1).Value
For i = 2 To finalrow1
If Sheets("Sheet1").Cells(i, 1) = cable Then
Sheets("Sheet1").Cells(i, 2).Copy
Sheets("Sheet2").Cells(k, l).PasteSpecial
l = l + 1
End If
Next i
k = k + 1
l = 2
Next j
End Sub
工作证明
我遇到了 vba 不会增加行号的问题。我的 table 看起来像: 工作表 1
name value
aa 11
bb 12
cc 13
aa 14
cc 15
cc 16
aa 17
bb 18
aa 19
工作表 2
name
aa
bb
cc
我需要搜索每个特定值,如果找到,则将相邻单元格复制到 sheet2 右侧的下一个搜索值。这是代码,但问题在于行增量,所有搜索到的值都在一行中(变量 k 不起作用)。
Sub finall()
Dim cable As String
Dim finalrow1 As Integer
Dim finalrow2 As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
l = 2
k = 2
finalrow2 = Sheets("Sheet2").Range("A1000").End(xlUp).Row
finalrow1 = Sheets("Sheet1").Range("A1000").End(xlUp).Row
For j = 2 To finalrow2
cable = Sheets("Sheet2").Cells(j, 1).Value
For i = 2 To finalrow1
If Cells(i, 1) = cable Then
Sheets("Sheet1").Cells(i, 2).Copy
Sheets("Sheet2").Cells(k, l).End(xlUp).Offset(1, 0).PasteSpecial
l = l + 1
End If
Next i
k = k + 1
Next j
End Sub
这只是最终示例,我想将此代码应用到 table 50-60k 行。
最终 table 应如下所示:
name
aa 11 14 17 19
bb 12 18
cc 13 15 16
感谢
最终代码如下
Sub finall()
Dim cable As String
Dim finalrow1 As Long
Dim finalrow2 As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
l = 2
k = 2
finalrow2 = Sheets("Sheet2").Range("A1000").End(xlUp).Row
finalrow1 = Sheets("Sheet1").Range("A1000").End(xlUp).Row
Worksheets("Sheet2").Select
For j = 2 To finalrow2
cable = Sheets("Sheet2").Cells(j, 1).Value
For i = 2 To finalrow1
If Sheets("Sheet1").Cells(i, 1) = cable Then
Sheets("Sheet1").Cells(i, 2).Copy
Sheets("Sheet2").Cells(k, l).PasteSpecial
l = l + 1
End If
Next i
k = k + 1
l = 2
Next j
End Sub
工作证明