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