Vba 团队作业/工作计划/计划员

Vba 团队作业/工作计划/计划员,vba,excel,Vba,Excel,目前我们使用的excel电子表格有4个选项卡(作为每个团队的选项卡),每个选项卡都是一周的计划员/日记,每天有4个“时段”用于计划中的作业。 员工将每项工作的信息输入当天的4个时间段中的一个。每个插槽包含不同单元格中的信息;工作编号、地址、持续时间、备注等 此方法的问题/耗时方面是,当作业必须在团队之间移动或移动到另一天时,需要大量复制、粘贴和删除 我试图实现的是某种形式的拖放界面(类似于Outlook中日历的工作方式),在该界面中,使用电子表格的用户可以在表单中输入作业的详细信息,然后使用拖放

目前我们使用的excel电子表格有4个选项卡(作为每个团队的选项卡),每个选项卡都是一周的计划员/日记,每天有4个“时段”用于计划中的作业。 员工将每项工作的信息输入当天的4个时间段中的一个。每个插槽包含不同单元格中的信息;工作编号、地址、持续时间、备注等

此方法的问题/耗时方面是,当作业必须在团队之间移动或移动到另一天时,需要大量复制、粘贴和删除

我试图实现的是某种形式的拖放界面(类似于Outlook中日历的工作方式),在该界面中,使用电子表格的用户可以在表单中输入作业的详细信息,然后使用拖放“平铺”,以便能够拖动到其中一个“窗口”中。 这些时段中包含的数据需要能够生成一个报告,该报告是一个线性列表,列出了该周计划的所有工作

我不知道应该使用什么方法来创建它,从我所能找到的东西来看,它似乎超出了Excel的范围,也超出了Access的范围,因此我怀疑它将涉及某种形式的编程。我对VBA有基本的了解,但仅此而已

有人能提些建议吗


谢谢

使用这种格式的数据总是很困难的,在整理好数据结构之前,我不建议添加任何拖放操作

您可能想考虑另一种方法,它涉及重构数据以使它更容易与……/P>一起使用。 如果您有一张包含以下列的工作表:

Teamname
Date  (instead of Week Number and Day of week,)
Timeslot
JobNo
Address
Duration
Notes
Etc
然后,每一行将代表一个作业,并具有作业发生时间的详细信息

这是数据库存储正在发生的作业信息的方式

要在作业发生时进行更改,只需更新行的日期(和时间段)

然后,您可以为每个使用excel公式查找本周发生的作业的团队创建另一个工作表,并将它们显示在每天的列中,就像您现在所做的那样。这些工作表仅用于显示目的

(您可以使用VLOOKUP等公式)

如果你想更改一份工作的日期,你只需转到长列表的工作表并更改日期即可

以这种长列表(即标准化)格式保存数据将给您带来许多好处。例如,您可以使用数据透视表汇总数据报告

如果向长列表中添加过滤器(请参见功能区>>数据>过滤器),则可以对数据进行排序,并缩小列表以仅显示选定日期或选定团队的作业等

这绝对是前进的方向。以这种方式重新构造数据后,您可以通过在团队工作表上添加按钮或其他方式,添加在作业发生时进行更改的浮华方式

第2部分: 因此,在you ling列表中,我建议使用excel CONCATENATE函数添加一个额外的列,其中包含您希望在“日历”的其他位置显示的文本

我还将创建另一列,它是行的唯一标识符。这可能是连接在一起的“YYYYMMDD格式的日期和HHMI格式的时隙”

在日历视图工作表中,您需要一列来显示一周中的每一天,并为每个时间段显示一行:您需要

  • 输入要查看的时段的起始日期

  • 为每天设置一列(使用公式计算一天的日期(即StartDate、StartDate+1等)。日期显示为列标题(可能采用显示日期名称的格式,但存储日期)

  • 每一行将有一个列,该列具有时间段名称,每一行将输入一个值。该值与长列表的时间段列中使用的值相同

  • 当用户双击单元格时,可以使用工作表事件

  • 双击前的工作表(ByVal目标作为范围,取消作为布尔值)

    在VBA代码中,对于此事件,您需要:

  • 查看双击的单元格是否是要响应的单元格
  • 如果是,请从相应的列和行标题中查找日期和时间段
  • 使用VBA激活长列表表,并可能进行筛选,以仅显示当天或可能是该周发生的作业。然后选择(或突出显示?)双击的作业
  • 一旦你了解VBA,这是很容易的

    虽然我想知道很多事情:

  • 使用命名范围定义带有日期的行,使用另一个命名范围定义带有时间段的列

  • 使用命名区域定义将响应双击的单元格

  • 使用VBA中的范围函数(如交叉点)和entirerow、EntireClumn范围属性来查找双击单元格的日期和时间段

  • 使用宏记录编写执行筛选的初始代码

  • 调整代码,使其书写良好,并根据需要找到日期和时间段

  • 为所有部门创建一张工作表?或者只创建一张可以选择部门的工作表

  • 您可以变得更聪明,允许用户在日历中选择两个单元格,并提供按钮来执行以下操作: 调换工作

    如果他们选择了多个单元格,则单击按钮转到列表,仅显示日历中选定的作业

    也许用户可以选择一个作业,按钮可以将作业前后移动1、2、7、14天

    请注意,您可以使用长列表记录作业的其他详细信息,如所用时间、客户、开始时间、结束时间等

    请参阅关于Pivot表,它可能会为您提供一些有关如何总结数据以提供诸如每天工作、每天工作总价值等信息的想法

    <>使用Excel将自己绑定到结点之前,应始终考虑使用Access。