将行移动到其他单元格等于工作表名称的工作表

我很新的VB。 请有人build议如何将行移动到另一个工作表,其中单元格值等于另一个工作表的名称。

基本上…在我的第一个工作表(所有数据),我有一个SQL脚本填充的数据范围。 在列A中有CS代表的名字,为我们公司工作。 每个CS代表都有自己的工作表。

我需要的是VB检查单元格A2(所有数据),并将单元格区域A2:M2移动到相应的CS Rep工作表的A2:M2。 (所有数据)行应该被删除。

此过程需要循环,直到“所有数据”中的所有行都移动到相应的CS代表工作表。 任何不匹配都可以移动到另一个名为“不匹配”的工作表中。 匹配的行应始终复制到相应工作表的第2行,将现有数据向下移动一行。

我真的希望这是有道理的!

谢谢SMORF

Sub MoveToCS()

Sheets("All Data").Select Cells.Select ActiveWorkbook.Worksheets("All Data").sort.SortFields.Clear ActiveWorkbook.Worksheets("All Data").sort.SortFields.Add Key:=Range( _ "A2:A357"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("All Data").sort .SetRange Range("A1:M357") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Cells.Select Selection.AutoFilter ActiveSheet.Range("$A$1:$M$1000").AutoFilter Field:=1, Criteria1:="ACHAL" Range("A2:M1000").Select Selection.Copy Sheets("ACHAL").Select Range("A2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Sheets("All Data").Select Selection.EntireRow.Delete ActiveSheet.Range("$A$1:$M$286").AutoFilter Field:=1 

结束小组

我将使用下一个:

ActiveCell.EntireRow.Insert '这将插入一个新的行,在情况下[“匹配的行应该总是复制到相应的工作表第2行移动现有的数据”]

Activecell.EntireRow.Copy '这将复制所有活动行。

ActiveCell.PasteSpecial '这会将数据粘贴到剪贴板中,确保这一行位于复制行之后。

ActiveCell.EntireRow.Delete '通过这个,您将能够从包含MySQL数据源的工作表中删除数据。

据此,我认为你不需要订购数据,只需创build一个循环移动到整个工作表的第一列(所有数据),以及一个开关,评估激活的单元格值,并依赖于数据select具体工作表和粘贴信息,粘贴后,回到主表,删除activecell和循环,如下所示:

 Sub Main() Sheets("All Data").Activate Range("A2").Activate Dim SheetToPaste As String Do While ActiveCell.Value <> "" Select Case ActiveCell.Value Case "Hoja2" SheetToPaste = "Hoja2" Case "Hoja3" SheetToPaste = "Hoja3" Case Else SheetToPaste = "Mismatch" End Select ActiveCell.EntireRow.Copy Sheets(SheetToPaste).Activate Range("A2").Activate ActiveCell.EntireRow.Insert Application.CutCopyMode = False Sheets("All Data").Activate ActiveCell.EntireRow.Delete Loop End Sub 

希望它的作品。