如何自动筛选,偏移和复制值到新的工作表Excel VBA

敬礼bretheren! 我叫克里斯托弗

最近我一直在通过一系列的excel项目进行比赛,我觉得我的脑子已经过热了。 如果你们能给我带来一些凉水,那将会非常感谢!

所以我有一个工作表,我正在使用作为一个清单,它是非交互式和date。 更不用说我为多个行中的每个零件存储库存信息(graphics很好,function不是很好)。

我已经创build了一个新的(更好的)工作簿,所以现在我只想把我的一些旧数据复制到一个新的工作表中(符合我的新的单行格式)。 我将直接复制并粘贴来自该表的信息到我的新改进的工作簿中

我有一些代码,我会在最后发布,而我正在试图做的是这样的:

在Sheet1中,我想让AutoFilter在列A中find第一个文本值“LOC”,然后偏移到B列来获取我的零件的位置。 然后它将抵消一行以获得零件号码。 之后,它将抵消另外两行以获得描述。

在Sheet2中,我想find第一个空行。 然后我希望我在Sheet1中find的信息存入空行的A,B和C列。

我希望我已经很具体了,就我而言,寻求帮助的方式,并不愚蠢!

在这里,我将发布我的代码,我感谢任何和所有的build议,代码调整和帮助!

谢谢!

-Christopher

PS小心,因为你可能会笑。 我的编码有时候是可笑的。 我始终明白为什么某些事情有效,不起作用,或者为什么其他事情在某种情况下更好呢?

码:

Sub CopyStuff() Dim iRow As Long Dim ws As Worksheet Dim Loc Dim Part Dim Desc Set ws = Worksheets("Sheet2") iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 With Sheets("Sheet2") Set Part = iRow.Offset(0, 0) Set Loc = iRow.Offset(0, 1) Set Desc = iRow.Offset(0, 2) End With With Sheets("Sheet1") .AutoFilter 1, "LOC" .Offset(0, 1).Copy Loc .Offset(1, 0).Copy Part .Offset(2, 0).Copy Desc .AutoFilter End With End Sub 

在Sheet1中,我想让AutoFilter在列A中find第一个文本值“LOC”,然后偏移到B列来获取我的零件的位置。 然后它将抵消一行以获得零件号码。

您不需要Autofilter,因为您必须从多行中检索值。 使用。 .Find

 Sub CopyStuff() Dim wsIRow As Long, wsORow As Long Dim wsI As Worksheet, wsO As Worksheet Dim rng As Range, aCell As Range Set wsI = Worksheets("Sheet1") Set wsO = Worksheets("Sheet2") wsORow = wsO.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 With wsI wsIRow = wsI.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row Set rng = .Range("A1:A" & wsIRow) With rng Set aCell = .Find(What:="LOC", LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not aCell Is Nothing Then wsO.Range("A" & wsORow).Value = aCell.Value wsO.Range("B" & wsORow).Value = aCell.Offset(, 1).Value wsO.Range("C" & wsORow).Value = aCell.Offset(1, 1).Value End If End With End With End Sub 

比方说Sheet1看起来像这样

在这里输入图像说明

输出结果将如下所示

在这里输入图像说明