我的任务是创建一个宏,它的行为就像一个VLOOKUP,但规模更大。基本上,我们希望宏查看列顶部的值,然后在不同的表格列中搜索该值。如果它找到该值,它应该将单元格中的值返回到它的右侧。一旦完成,它应该删除该列中的任何重复值和空白单元格。在一个表中的值和正确的返回值
然后,我需要代码循环到下一列并重复,直到没有更多值要查找。
我可以完美地得到第一列数据,但我似乎无法使它在后续列(循环或直接引用)上工作。任何人都可以将我指向正确的方向吗? (注意,由于每行的数据量很大,我禁用了最后一行来测试10行的循环)。
Option Explicit
Sub ReturnActions()
Dim itemNumber As String
Dim finalRow As Integer
Dim i As Integer
Dim ws1 As Object
Dim ws2 As Object
Set ws1 = Worksheets("Intermediate_Data")
Set ws2 = Worksheets("Final Workings")
ws2.Activate
Range("A2").Select
itemNumber = ws1.Range("A1").value
finalRow = ws2.Range(ActiveCell, ActiveCell.End(xlUp)).Select
ws2.Activate
'For i = 2 To finalRow
For i = 2 To ws2.Range("A10").Row
If Cells(i, 1) = itemNumber Then
ws2.Cells(i, 2).Copy
ws1.Range("A100000").End(xlUp).Offset(1, 0).PasteSpecial 'Transpose:=True
End If
Next i
'Remove duplicates and blanks from data
With ws1.Range("A:A")
.value = .value
.RemoveDuplicates Columns:=1, Header:=xlYes
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp
On Error GoTo 0
End With
Range("A2").Offset(0, 1).Select
'Select data worksheet
ws1.Activate
'Select cell A1
Range("A1").Select
'Select next column item number
itemNumber = ActiveCell.Offset(0, 1).Select
'Execute code
ws2.Activate
'For i = 2 To finalRow
For i = 2 To ws2.Range("B10").Row
If Cells(i, 2) = itemNumber Then
ws2.Cells(i, 3).Copy
ws1.Range("B100000").End(xlUp).Offset(1, 0).PasteSpecial 'Transpose:=True
End If
Next i
With ws1.Range("B:B")
.value = .value
.RemoveDuplicates Columns:=1, Header:=xlYes
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp
On Error GoTo 0
End With
End Sub
詹姆斯,我想帮你通过这个工作,但我无法找到凡在你的代码,你尝试在随后的专栏中处理数据。你能给我一些指导吗? –
嗨,吉姆,我试着按行开始下一列:Range(“A2”)。Offset(0,1).Select。这是我已经试图开始引用下一列来查看数据整理完成后的地方。 – jeden