【发布时间】:2018-09-16 06:19:32
【问题描述】:
我是新手,所以请帮助我。我有一个工作簿,其中包含以下三张纸-
Sheet1- 有 3 个 cloumns- A、B、C Sheet2-有一列-A **输出
如果 Sheet1- Column B 的单元格中的值与 Sheet2 Column A 的任何单元格中的值匹配,则复制整行并粘贴到下一个可用的空白行(从输出表的 A) 列开始。
工作表 2 的 B 列可以有重复的单元格,所有匹配的单元格都应该转到输出工作表的下一个可用行。
**Sheet 1** **Sheet 2** **Output**
A B C A 3 Glen 28
1 Jen 26 Glen 1 Jen 26
2 Ben 24 Jen 4 Jen 18
3 Glen 28
4 Jen 18
我在下面尝试过。不知道有多好-
Sub Test()
Set objwork1 = ActiveWorkbook ' Workbooks("Search WR")
Set obj1 = objwork1.Worksheets("Header")
Set obj2 = objwork1.Worksheets("XML1")
Set obj3 = objwork1.Worksheets("VC")
Set obj4 = objwork1.Worksheets("Output")
i = 2
j = 2
Do Until (obj3.Cells(j, 1)) = ""
If obj2.Cells(i, 2) = obj3.Cells(j, 1) Then
Set sourceColumn = obj2.Rows(i)
Set targetColumn = obj4.Rows(j)
sourceColumn.Copy Destination:=targetColumn
Else
i = i + 1
End If
j = j + 1
Loop
End Sub
下面也试过了-
Sub Check()
Set objwork1 = ActiveWorkbook ' Workbooks("Search WR")
Set obj1 = objwork1.Worksheets("Header")
Set obj2 = objwork1.Worksheets("XML1")
Set obj3 = objwork1.Worksheets("VC")
Set obj4 = objwork1.Worksheets("Output")
Dim LR As Long, i As Long, j As Long
j = 2
LR = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LR
For j = 2 To LR
obj3.Select
If obj3.Range("A" & i).value = obj2.Range("B" & j).value Then
Rows(j).Select
Selection.Copy
obj4.Select
obj4.Range("A1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
obj3.Select
End If
Next j
Next i
End Sub
【问题讨论】:
-
到目前为止你尝试了什么?请edit问题并添加您的代码。 Stack Overflow 不是免费的代码编写服务,因此如果您什么都不做,任何人都不太可能完成所有工作。阅读How to Ask 可能有助于改善您的问题(您甚至还没有问过)。
-
感谢 Peh.. 已添加
-
好吧,首先你不需要
.select(How to avoid using Select in Excel VBA)。你能解释一下你的代码出了什么问题吗?有什么错误吗?与您的预期有何不同?