目前我们使用带有4个标签的Excel电子表格(作为每个小组的标签),每个标签是一周的计划/日记,每天有4"插槽"对于计划中的工作。 人们将每个作业的信息输入当天的4个插槽中的一个。每个时隙包含不同小区的信息;工号,地址,期限,备注等......
此方法的问题/耗时方面是,当必须在团队之间移动作业或移动到不同的日子时,它涉及大量复制,粘贴和删除。
我想要实现的是某种形式的拖放界面(类似于Outlook中日历的工作方式),使用电子表格的人可以在表单中输入作业的详细信息然后拖动一滴水"瓷砖"能够拖入其中一个"插槽。 这些插槽中包含的数据需要能够生成一份报告,该报告是本周计划的所有工作的线性列表。
我无法弄清楚我应该用什么方法来创建它,它似乎超出了我能找到的Excel的范围,也超出了Access的范围,所以我怀疑它将涉及某种形式编程。我对VBA有基本的了解,但这是关于它的。
任何人都可以提出任何建议。
由于
答案 0 :(得分:1)
使用这种格式的数据总是很难,在你整理出数据结构之前,我不会建议添加任何拖放操作。
您可能想要考虑另一种方法,其中包括重构数据以便更轻松地使用...
如果您有一张包含以下列的工作表:
Teamname
Date (instead of Week Number and Day of week,)
Timeslot
JobNo
Address
Duration
Notes
Etc
然后每一行都代表一个工作,并详细说明它何时发生。
这是数据库存储有关正在发生的作业的信息的方式。
要在作业发生时进行更改,您只需更新行的日期(和时间段)即可。
然后,您可以为每个团队创建另一个工作表,使用excel公式查找本周发生的工作,并将其显示在每天的列中 - 就像您现在一样。这些表仅用于显示目的。
(你会使用像VLOOKUP等公式)
如果您想更改作业的日期,则只需使用长列表转到工作表并更改日期。
将您的数据保存在这个长列表(即标准化)格式中将为您带来许多好处。例如,您可以使用数据透视表对数据报告进行夏季处理。
如果您向长列表添加过滤器(参见功能区>>数据>过滤器),您可以订购数据并将列表缩小为仅显示所选日期的作业,或者选定的团队等...
这绝对是前进的方式。以这种方式重组数据之后,您可以通过在团队工作表上添加按钮或其他内容,在作业发生时添加华而不实的方式进行更改。
PART2: 因此,在您的列表中,我建议使用excel CONCATENATE函数添加一个额外的列,其中包含您希望在" calendar"中显示的文本。 #COLUMNA
我还会创建另一列,该列是该行的唯一标识符。这可能是YYYMMDD格式的"日期& HHMI格式的时隙"连在一起。
在日历视图表中,您需要一列显示每周的每一天,每个时段都有一行:您需要
输入您要查看的期间的开始日期
为每一天设置一个列(使用公式计算当天的日期(即StartDate,StartDate + 1等)。日期显示为列标题(可能带有显示日期的格式) dayname,但存储日期)
每一行都有一个具有timeperiod名称的列,每行都会输入一个值。该值与长列表的timeperiod列中使用的值相同。
当用户双击单元格时,您可以使用工作表事件
Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
在VBA代码中,对于此事件,您需要:
一旦你了解VBA,这很容易。
虽然我愿意,但还有很多要知道的事情:
使用命名范围来定义具有日期的行,使用另一个定义具有时间段的列
使用命名范围来定义将响应双击的单元格
在VBA中使用范围函数(如交集)和整个整列范围属性来查找双击单元格的日期和时间段。
使用宏记录编写将执行过滤的初始代码。
调整代码以便写好并根据需要查找日期和时间段。
为所有部门创建工作表?或者只创建一张可以选择部门的工作表。
您可以变得聪明并允许用户在日历中选择两个单元格,并提供执行以下操作的按钮: 交换工作
如果他们选择了多个单元格,则按一个按钮转到列表,仅显示在日历中选择的作业。
也许用户可以选择一个作业,按钮可以将作业移回或转发1,2,7,14天。
请注意,您可以使用长列表记录作业的其他详细信息,如时间,客户,开始时间,结束时间等...
请参阅数据透视表here,它可能会为您提供一些有关如何汇总数据以提供每天工作,白天工作总值等信息的建议......
在使用Excel绑定自己之前,你应该总是考虑使用Access ....就像知道他们正在做什么的人一样,访问会在更短的时间内提供更多的东西,并且可以做很好的事情,比如每份工作打印一页等等......
(你需要承包商吗?)
mr@HarveyFrench.co.uk