我的任務是創建一個宏,它的行爲就像一個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