当找到“x”且不重复时,如何编写代码以将数据从一个工作表复制到另一个工作表

时间:2013-09-03 18:55:50

标签: excel vba excel-vba

我试图弄清楚如何制作一个宏,将一个名为Used Car Log的工作表中的数据复制到另一个名为Used Pending的工作表上,但仅限于在二手车日志中的L列中找到x时。如果在列L中找到x,那么我需要将单元格B到K(在该行上)中的所有数据复制到Used Pending到相应的列B到K.我需要它来找到下一个空行以将其插入到I中需要它不要复制任何数据。任何帮助,将不胜感激!我正在使用Excel 2007。

3 个答案:

答案 0 :(得分:0)

下面的代码将完全符合您的要求,但不会超过您的要求。它将L列中的值设置为xx(而不仅仅是x)以不复制数据两次,并且它假定L列中的x-es是有序的,这当然可能是错误的假设。

Sub CopyData()
Dim run As Boolean
Dim i As Integer
i = 1
run = True
While run
    If Worksheets("Used Car Log").Range("L" + CStr(i)).Value = "x" Then
        Worksheets("Used Pending").Range("B" + CStr(i) + ":K" + CStr(i)).Value = Worksheets("Used Car Log").Range("B" + CStr(i) + ":K" + CStr(i)).Value
        'Mark the value as copied by setting the value in column L as xx
        Worksheets("Used Car Log").Range("L" + CStr(i)).Value = "xx"
    ElseIf Worksheets("Used Car Log").Range("L" + CStr(i)).Value = "" Then
        run = False
    End If

    i = i + 1
Wend


End Sub

答案 1 :(得分:0)

您是否尝试过使用IF功能?

例如,在已使用的待处理工作表中,您可以在单元格 A1 中使用这样的公式:

=IF(UsedCarLog!L1="x",UsedCarLog!A1,"")

然后,删除使用过的表格中的所有空行。

答案 2 :(得分:0)

试试这个:

Sub FindAndMove()

Dim LastrowUP As Integer
Dim LastrowCarLog As Integer
Dim RowNumber As Integer

LastrowCarLog = Sheets("Used Car Log").Cells(Cells.Rows.Count, "B").End(xlUp).Row

For Each c In Sheets("Used Car Log").Range("L1:L" & LastrowCarLog)
 If c.text = "x" Then
 RowNumber = c.Row
 LastrowUP = Sheets("Used Pending").Cells(Cells.Rows.Count, "B").End(xlUp).Row
 Sheets("Used Car Log").Range("B" & RowNumber & ":" & "K" & RowNumber).Copy
 Sheets("Used Pending").Range("B" & LastrowUP + 1).PasteSpecial Paste:=xlPasteValues
 Application.CutCopyMode = False
 End If
Next c

Sheets("Used Pending").Range("B1:K" & LastrowUP + 1).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7 , 8, 9, 10), Header:=xlNo

End Sub

在VB编辑器中粘贴到新模块中。然后,在电子表格上创建一个按钮,右键单击,选择“分配宏”并选择FindAndMove