输入特定值时添加行(Excel)

输入特定值时添加行(Excel),excel,vba,Excel,Vba,我有一个员工项目(员工1至8)和他们的月度计划,我有2个(或更多)工作岗位。他们的班次是1、2和3。 假设S1是第一个帖子,S2是第二个帖子。1至4名员工通常安排在S1,5至8名员工安排在S2。 当我需要S1的员工在S2上轮班时,我将该轮班与指示器(例如2 S02)一起放在他的S1行上,并且我有第二张表,该表通过索引/匹配读取所有轮班(我需要将整个程序放在一行中,以便我可以在第二张表上进行其他计算)。然后在第一页,我有两个岗位上的所有员工(因此两个岗位都有8行),每个岗位都有额外的行,隐藏着一个

我有一个员工项目(员工1至8)和他们的月度计划,我有2个(或更多)工作岗位。他们的班次是1、2和3。 假设S1是第一个帖子,S2是第二个帖子。1至4名员工通常安排在S1,5至8名员工安排在S2。 当我需要S1的员工在S2上轮班时,我将该轮班与指示器(例如2 S02)一起放在他的S1行上,并且我有第二张表,该表通过索引/匹配读取所有轮班(我需要将整个程序放在一行中,以便我可以在第二张表上进行其他计算)。然后在第一页,我有两个岗位上的所有员工(因此两个岗位都有8行),每个岗位都有额外的行,隐藏着一个counta函数和一个0/1过滤器,其中包含一个简单的if函数,该函数只返回班次号,不返回岗位指示器。这些行从第二张工作表读取值,并返回在另一张工作表上插入的移位,因此当过滤后的counta值变为1时,我有一个vba命令,该命令在每次插入值时执行“重新应用过滤器”,因此该行出现。 这种方法使得工作簿在处理100名员工和20篇文章时显得太滞后。 有没有办法用另一种更轻的方法来显示线条

在第一张图片中,您可以看到工作表在未过滤时的外观,在第二张图片中,您可以看到工作表在过滤后的外观

我使用的VBA命令如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("SHIFTS").AutoFilter.ApplyFilter
End Sub
提前谢谢


我相信我理解您的问题:目前,在您的工作表的每次更改(即填写的每个单元格)时,都会重新应用自动筛选,严重降低Excel文件的速度

我认为这有两种可能的结果:

  • 或者您预见到某种形式,人们可以输入某个员工的所有值,当他们单击“确定”按钮时,这些值将被填写,然后重新应用过滤器。(显然,这意味着您需要删除提到的宏)

  • 如果您提到仅在输入某个值(比如“E”列)的情况下才需要应用自动筛选,则可以按如下方式执行:

    Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Column = 5 'Column "E" stands for .Column number 5
      Then Sheets("SHIFTS").AutoFilter.ApplyFilter
      End If
    End Sub
    

  • 请编辑您的问题,添加您已经拥有的VBA“命令”。完成。我希望这能有所帮助。我目前正在做的是第一件事,但对于其他使用该表单并且除了输入值之外没有excel知识的同事来说,这并不容易。第二个我不太明白。您是否建议添加一列,以便存储所有特定值?因为这是不可能的,因为有无数的组合。无论如何,我一直在寻找一种不同的方法来添加额外的行,而不将它们隐藏在那里,因为对于例如120名员工和20个帖子,我需要一张有4000行的工作表,其中大多数都有功能,因此即使没有VBA宏,工作表也会变得太重。谢谢。@ragnarnightwarker:这可能不是你想要的答案,但是为什么你需要自动重新应用自动过滤呢?您可以告诉客户如何启动自动过滤器,您可以创建一个按钮来启用自动过滤器,…,但我不明白您为什么需要排除所有这些麻烦,只是为了展示一些像自动筛选这样简单的东西。因为当我们需要创建整整一个月的计划,并且我们需要定期进行员工从一个岗位到另一个岗位的转移时,重新应用筛选时出现的一个错误(忘记或其他错误)可能会导致大量的工作时间浪费。安全总比后悔好。这就是为什么我需要立即显示额外的行。