与列中的先前条目匹配,将行中的其余数据复制

时间:2019-04-26 03:09:31

标签: excel vba copy paste

我正在尝试制作一个vba代码,以允许更快地输入可能的重复数据。在我的示例中,我试图获取H列中的条目,以检查是否已经输入了库存编号。如果是这样,请将数据从匹配行的第I列-M列复制到空白的“新条目”行的I列-M列。

这是我尝试输入代码的其中之一

    Private Sub finddata()
    Dim stock As Integer
    Dim finalrow As Integer
    Dim i As Integer

    finalrow = Sheet1.Range("H50").End(xlUp).Row
    For i = 2 To finalrow
    stock = Sheet1.Cells(i, 8).Value
    If Cells(i, 8) = stock Then
    Range(Cells(i, 9), Cells(i, 13)).Copy
    Range("I50").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    End If
    Next i

    End Sub

enter image description here

任何建议都会很棒,我不能在excel中直接使用vlookup,单元格需要保持空白,以便在找不到匹配项的情况下可以输入数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

马特。

我一直在使用您的宏和类似于您的虚拟数据集。

我对您的代码进行了一些修改,使我能够得到您想要的结果:

Private Sub finddata()
'Dim stock As Integer
Dim finalrow As Integer
Dim i As Integer


'Modified:
finalrow = Sheet1.Range("H1").End(xlDown).Row
For i = 2 To finalrow - 1
    For j = 3 To finalrow
        stock = Sheet1.Cells(j, 8).Value
        If Cells(i, 8) = stock Then
            Range(Cells(i, 9), Cells(i, 13)).Copy
            'Modified line:
            Sheet1.Range("I" & j & ":M" & j).PasteSpecial Paste:=xlPasteValues
        End If
    Next j
Next i
Application.CutCopyMode = False
End Sub

如您所见,首先我删除了stock变量的Dim声明。覆盖值时出现错误。

第二,而不是从表格底部向上搜索,而是从H1一直搜索到最后使用的行,以进行优化。

最重要的是,我在您的for内嵌套了另一个for,检查该列上的所有其他库存编号。

然后,我检查了If块内的最后一行。我不确定您要做什么,因为我没有完全在您的代码中得到这一行。但是我尝试了我的方法,它奏效了。

结果是:在前一行中具有匹配项的每个股票编号在该行的I至M列中都具有相同的值

在执行宏之前: Before executing macro

执行后: After executing

我不确定这是否正是您想要的目标,但这只是一个开始。

我确定必须在侦听器或按钮上实现此宏,以便于使用。

希望有帮助。