一旦从多个选项卡中确定优先级,如何将特定行复制到第一个 tab/worksheet?

How do I get specific rows once prioritized from multiple tabs to copy onto the 1st tab/worksheet?

我创建了一个包含 11 tabs/sheets 个 excel 的工作簿。第一个 sheet 是在 10 个独立部门优先级之前的组合优先级 sheet。我在所有 11 个 sheet 上使用了相同的列 headers,A 列为 "Division Priority"。我想要做的是,当任何行更新为 10 个选项卡中任何一个的 A 列中的数字时,该行将被复制到第一个 tab/sheet,即 "consolidated" 选项卡。例如,在销售和市场营销的 sheet 3 上,该团队在其中一个项目的 A 列中放置了一个 3,它现在将显示在选项卡 1 上 - 'Consolidated' 我是初学者并且一直搜索数小时以了解如何执行此操作,包括使用一些 IF 语句,但在复制行或将传输到主 sheet 的数据限制为仅编号后的特定行时,似乎没有什么特定于列.任何帮助深表感谢。或者任何其他具体问题请告诉我。

评论补充:

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

您可以实现一个 Workbook_SheetChange 来涵盖所有工作sheet(不包括第一个),这些工作将作用于 A 列中数值的变化。

点击 Alt+F11,当 VBE 打开时,查看 Project Explorer在左手边。如果找不到 Project Explorer,请点击 Ctrl+R 以显示它(或查看 ► Project Explorer)。 Double-click ThisWorkbook 显示工作簿代码 sheet。将以下内容粘贴到右侧窗格中,标题类似于 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 以 return 进入您的工作sheet(s)。在作品sheet的第 2-12 列的 A 列中输入任何数字都会导致该行被复制到第一个作品sheet 的第一个空白行。

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

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

以上将在第一个工作sheet中查找与C列中的项目关联的项目标识符,当优先级从分工sheet中删除时。如果优先级从 3 更改为 1,它仍然会生成重复记录。由于没有讨论处理它的业务规则,因此尚未完全考虑到这种情况。