VBA在列L值与列P匹配时将行复制到新电子表格
我运行每周销售报告,并根据销售人员姓名移动一些信息,以便生成多个报告 我有代码对“L”列中的销售人员姓名进行排序,删除重复的姓名并生成一个新的列“p”。然后创建新的图纸,并在“P”中的名称后命名。这样,如果我让销售人员来来去去,我就不必手动修改任何内容 我目前过滤名称并手动将行数据移动到各自的工作表中。我需要的是: 1-查找L列中与“主名称列”单元格P2或P3或P4等匹配的所有名称 2-将L列中具有名称的所有行复制到同名工作表中。工作表名称与第P列中的名称相同 3-在第p列单元格P3中移动下一个名称,然后再次开始匹配过程…` 我已经附上了代码,我正在使用这些代码从p列中的名称创建工作表VBA在列L值与列P匹配时将行复制到新电子表格,vba,excel,Vba,Excel,我运行每周销售报告,并根据销售人员姓名移动一些信息,以便生成多个报告 我有代码对“L”列中的销售人员姓名进行排序,删除重复的姓名并生成一个新的列“p”。然后创建新的图纸,并在“P”中的名称后命名。这样,如果我让销售人员来来去去,我就不必手动修改任何内容 我目前过滤名称并手动将行数据移动到各自的工作表中。我需要的是: 1-查找L列中与“主名称列”单元格P2或P3或P4等匹配的所有名称 2-将L列中具有名称的所有行复制到同名工作表中。工作表名称与第P列中的名称相同 3-在第p列单元格P3中移动下一个
Dim newSheet As Worksheet, regionSheet As Worksheet
Dim cell As Object
Dim regionRange As String
Set regionSheet = Sheets("EXPORT_QUERY")
Application.ScreenUpdating = False
regionRange = "P2:" & regionSheet.Range("P2").End(xlDown).Address
For Each cell In regionSheet.Range(regionRange)
If SheetExists(cell.Value) = False Then
Sheets.Add After:=Sheets(Sheets.Count)
Set newSheet = ActiveSheet
newSheet.Name = cell.Value
Application.DisplayAlerts = False
Application.DisplayAlerts = True
End If
Next cell
MsgBox "All worksheets have been created successfully"
Application.ScreenUpdating = True
End Sub
以大纲的形式,我要做的是,在创建工作表之后&在向下移动到下一个P2、P3等单元格之前,创建一个从上到下沿列L向下的循环,如果L中的名称与单元格中的名称匹配,则将该行复制到新创建的工作表中 要做到这一点,您需要有一个RowCounter变量,该变量从要在新工作表中填充的第一行开始,并在每次将行从“主”工作表复制到新创建的工作表时递增。这是您的“目的地”占位符。这和L列的循环不一样,因为它们计算的是不同的东西 看起来你在这里的一切是一个好的开始;将新代码放在两个Application.DisplayAlerts语句之间应该可以工作
希望有帮助;这至少会让您朝着正确的方向前进。希望下面的代码能够很好地工作,如果没有,可能会有一些变量需要编辑。如果有什么地方出错,一定要告诉我,我可以帮你。这里的假设是P列只包含唯一的名称
Set regionSheet = Sheets("EXPORT_QUERY")
regionRange = "P2:" & regionSheet.Range("P2").End(xlDown).Address
For Each cell In regionSheet.Range(regionRange)
Range("A1:L" & Range("A" & rows.count).end(xlup).row).select
Selection.AutoFilter
ActiveSheet.Range("$A$2:$L$" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=12, Criteria1:=cell.Value
ActiveSheet.Range("$A$2:$L$" & Range("A" & Rows.Count).End(xlUp).Row).Copy
Sheets(cell.Value).Select
Range("A" & Range("A" & Rows.Count).End(xlUp).Row).Select
ActiveSheet.Paste
Sheets("EXPORT_QUERY").select
Selection.AutoFilter
Next cell
MsgBox DONE"
我必须将范围(“A”&Range(“A”&Rows.Count line”)更改为ActiveSheet.Range,否则它会试图从empy工作表中提取数据。但这正是我想要的。现在将两个代码合并到一个控制按钮中,这一步就完成了。再次干杯。我该回家喝杯啤酒了