Excel 如何将多个选项卡中的特定行按优先级排序后复制到第一个选项卡/工作表上?

Excel 如何将多个选项卡中的特定行按优先级排序后复制到第一个选项卡/工作表上?,excel,tabs,excel-2007,Excel,Tabs,Excel 2007,我创建了一个包含11个选项卡/工作表的excel工作簿。第一张表是在各自表上的10个单独部门优先顺序之前的组合优先顺序。我在所有11张表上使用了相同的列标题,列A是“部门优先”。我试图做的是,当任何一行在10个选项卡中的任意一个上用a列中的数字更新时,该行将复制到第一个选项卡/工作表,即“合并”选项卡。例如,在《销售和市场营销》的第3页中,该团队在其中一个项目的a列中放置了一个3,现在,它将显示在选项卡1-“Consolidated”(合并)上。我是一名初学者,已经搜索了数小时,了解如何做到这一

我创建了一个包含11个选项卡/工作表的excel工作簿。第一张表是在各自表上的10个单独部门优先顺序之前的组合优先顺序。我在所有11张表上使用了相同的列标题,列A是“部门优先”。我试图做的是,当任何一行在10个选项卡中的任意一个上用a列中的数字更新时,该行将复制到第一个选项卡/工作表,即“合并”选项卡。例如,在《销售和市场营销》的第3页中,该团队在其中一个项目的a列中放置了一个3,现在,它将显示在选项卡1-“Consolidated”(合并)上。我是一名初学者,已经搜索了数小时,了解如何做到这一点,包括使用一些IF语句,但在复制行或将传输到主控表的数据限制在编号后的特定行时,似乎没有任何特定于列的内容。非常感谢您的帮助。或任何其他具体问题,请告诉我

评论附录:


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

您可以实现一个
工作簿\u SheetChange
,它将覆盖所有工作表(不包括第一个工作表),这些工作表将对列A中的数值进行更改

点击Alt+F11,当VBE打开时,查看左侧的项目资源管理器。如果找不到项目资源管理器,请单击Ctrl+R以显示它(或查看)► 项目浏览器)。双击此工作簿以显示工作簿代码表。将以下内容粘贴到右侧的窗格中,标题类似于Book1-ThisWorkbook(代码)

点击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,它仍将生成重复记录。由于没有讨论处理这种情况的业务规则,因此尚未完全考虑到这种情况。

是否要更新第一张工作表中的一行,或向第一张工作表的第一个空行添加新值(可能还有更多信息)?你的问题在你的脑海里可能很清楚,但我的问题却很模糊。无法编程模糊。对此表示抱歉。我希望在任何选项卡(2-11)的a列中用数字指定的任何行显示在第一个选项卡上。因此,如果在表3中,销售团队决定第15行中列出的项目是他们的#1优先级,他们会在第15行的a列中加上“1”。这将把整行复制到第一个选项卡/工作表上,因为它是优先顺序的合并项目列表(因此工作表3第15行将复制到工作表1第2行)。因此,列A中未编号的任何内容都不会显示在第一个选项卡/工作表上。“我不知道这是澄清了还是让它变得更混乱了。”@ProjAnalys29-很高兴这对你有帮助。可以修改工作簿范围的事件宏,以便在项目降级时从第一个工作表中删除条目,但必须使用某些唯一标识符(如项目编号)来定位第一个工作表中的条目,以便将其删除。因此,我在每个工作表的C列中通过项目标识每个项目号码。我们使用一个内部程序来跟踪项目,因此该专栏实际上被称为“Praxis”。这是一个可以用来将该功能添加到宏中的标识符吗?不管怎样,再次感谢你的邀请help@ProjAnalys29-请参阅我添加的附录,因为表格已经增加,我现在有16个选项卡,15个滚动到第一个选项卡(合并)。所以现在有一些标签没有出现。我的问题是宏的哪个部分控制要引用的工作表的数量?这样我就可以编辑它以包含额外的工作表,如果它再次增长,我就不必寻求帮助了?让我知道你的想法。再次感谢你。
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