如何从多个选项卡中优先处理特定行以复制到第一个选项卡/工作表上?

时间:2015-01-25 15:47:13

标签: excel tabs excel-2007

我创建了一个包含11个标签/页的Excel工作簿。第一张表是在各自的表单上各10个单独的部门优先级之前的组合优先级。我在所有11张纸上都使用了相同的列标题,其中A列是" Division Priority"。我试图做的是当任何行更新时,在10个选项卡中的任何一个上用A列中的数字进行更新,该行被复制到第一个选项卡/表,即"合并"标签。例如,在销售和营销的表3中,该团队在其中一个项目的A列中放置了3,它现在将显示在选项卡1-' Consolidated'我是初学者,并且一直在搜索如何执行此操作,包括使用一些IF语句,但在复制行或将传输到主工作表的数据限制为仅特定行时似乎没有特定于列的特定内容他们被编号后。任何帮助深表感谢。或者任何其他具体问题,请告诉我。

评论附录:

我希望在任何一个选项卡(2-11)上用A列中的数字指定的任何行显示在第一个选项卡上。因此,如果在选项卡/表3中,销售团队决定第15行中列出的项目是他们的第一优先级,他们会将“' 1'在第A行第15行中。这会将整行复制到第一个选项卡/工作表上,因为它是合并项目的优先级列表(因此第3行第15行将复制到第1页第2行)。因此,A列中未编号的任何内容都不会显示在第一个标签/表格上。

1 个答案:

答案 0 :(得分:0)

您可以实施一个Workbook_SheetChange来覆盖所有工作表(不包括第一个),这些工作表将对A列中的数值进行更改。

点击 Alt + F11 ,当VBE打开时,请查看左侧的 Project Explorer 。如果找不到Project Explorer,请点击 Ctrl + R 以显示它(或查看►ProjectExplorer)。双击 ThisWorkbook 以显示工作簿代码表。将以下内容粘贴到右侧的窗格中,标题为 Book1 - ThisWorkbook(Code)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Sh.Columns(1)) Is Nothing Then
        If Target.Row > 1 And Sh.Index > 1 And _
          IsNumeric(Target) And Not IsEmpty(Target) Then
            On Error GoTo Fìn
            Application.EnableEvents = False
            Target.Resize(1, Target.CurrentRegion.Columns.Count).Copy _
                Destination:=Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
    End If
Fìn:
    Application.EnableEvents = True
End Sub

点击 Alt + Q 返回工作表。在工作表2-12的A列中键入的任何数字都将导致该行被复制到第一个工作表的第一个空白行。

编辑:删除优先级时添加项目删除

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Sh.Columns(1)) Is Nothing Then
        If Target.Row > 1 And Sh.Index > 1 And _
          IsNumeric(Target) And Not IsEmpty(Target) Then
            On Error GoTo Fìn
            Application.EnableEvents = False
            Target.Resize(1, Target.CurrentRegion.Columns.Count).Copy _
                Destination:=Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        ElseIf Target.Row > 1 And Sh.Index > 1 And _
          (IsEmpty(Target) Or Not IsNumeric(Target)) Then
            On Error GoTo Fìn
            Application.EnableEvents = False
            With Sheets(1)
                If CBool(Application.CountIf(.Columns(3), Target.Offset(0, 2).Value)) Then
                    .Rows(Application.Match(Target.Offset(0, 2).Value, .Columns(3), 0)).EntireRow.Delete
                End If
            End With
        End If
    End If
Fìn:
    Application.EnableEvents = True
End Sub

当从分部工作表中删除优先级时,上面将查看与C列中项目关联的项目标识符的第一个工作表。如果优先级从 3 更改为 1 ,它仍会生成重复记录。这种情况尚未完全解释,因为没有讨论处理它的业务规则。