如果您有一张包含所有信息的表格,并且您想依次为每个女孩创建一个“摘录”,您至少有两个选择
1) 如果您只需要打印每个 HK 的工作表一次,请使用主工作表上的“自动筛选”选项,然后点击“打印” - 并为每个管家重复此操作。它仍然需要一些工作(虽然只有 43 个房间,也许还有几个管家,但并不多)。
2)如果您想在工作簿中为每个管家提供一个单独的工作表,您可能需要更多地自动化操作 - 使用 VBA 宏。这并不难,但考虑到您提出问题的方式,您可能不想解决它。如果你这样做 - 这是一种方法:
- 使用名为“MasterSheet”的工作表创建工作簿:这是您放置所有信息的地方
- 为每个管家创建一张单独的表格 - 称您的表格为“Katie”、“Sue”等 - 为每个员工一张(无论他们是否在今天的名单上)
- 在“模块”中添加以下代码:从工作簿中,按
Alt-F11
,然后(在 VBA 编辑器中)插入...模块并粘贴此代码:
Sub createDailyWorklist()
'
' Update a series of worksheets based on the first ("Master") sheet
'
'
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ActiveWorkbook.Sheets
If Not sh.Name = "MasterSheet" Then ' skip first sheet - it is the "master"
sh.Activate ' select the sheet
sh.Cells.Clear ' remove old content
' set the criteria for the filter:
sh.Range("A1").Value = "HK" ' column to filter on
sh.Range("A2").Value = "'=" & sh.Name ' value to find = sheet name (housekeeper name)
' using the '= to get an exact match (not "starting with")
' otherwise Jane would get Janet's work too...
' there are 43 rooms so we know where the input data range is:
Sheets("MasterSheet").Range("A1:D44").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=sh.Range("A1:A2"), CopyToRange:=Range("A3:D3"), Unique _
:=False
Rows("1:2").Delete ' get rid of the criteria
Columns("A:D").EntireColumn.AutoFit ' make the columns just wide enough
End If
Next sh
Application.ScreenUpdating = True
End Sub
当您想创建工作列表时,您按下Alt-F8
,然后从出现的菜单中选择“createDailyWorklist”。点击“运行”
嘿,快!每个管家都有一张纸,需要做的房间等等。
显然,您可以修改它以更好地满足您的需求 - 格式、要复制的字段数量等。但我希望这能让您继续前进。