使用多个位置自动填充多个单元格

时间:2013-08-16 21:46:04

标签: excel

我目前有一张House Keeping(HK)表,当他们进来时分发给女孩。为了节省早上的时间,我一直在尝试输入一个公式,自动从Head HK表转移所有房间个人香港的床单。目前,HK主页看起来像这样,但没有破折号:

Housekeeper ---------- Room --------- Status ------ Set Up

Katie ------------------ 1 ---------- Ready ------- Double

Sue -------------------- 2 ------ Departing ------- Single

Katie ------------------ 3 ------ Stay over ------- Family

这继续到43号房间

我想使用HK的名称作为主要数据来源,所以当我在单张HK表上选择他们的名字(使用下拉列表)时,它会自动填写以下所有与房间订单相关联的单元格。

2 个答案:

答案 0 :(得分:0)

我写了一个如何做到这一点的教程,如果您有任何问题,请告诉我:

http://www.excelforum.com/tips-and-tutorials/947848-lookup-a-value-and-return-multiple-results.html

答案 1 :(得分:0)

如果您有一张包含所有信息的单页,并且您想依次为每个女孩创建一个“摘录”,那么您至少有两个选项

1)如果您只需要打印每张HK的纸张一次,请使用主页上的“自动过滤”选项,然后点击“打印” - 并为每个管家重复。它仍然涉及一些工作(虽然只有43个房间,也许只有少数管家,但并不是那么多)。

2)如果你想在每个管家的工作簿中有一个单独的工作表,你可能想要使用VBA宏自动化更多东西。这并不难,但鉴于你如何提出问题,你可能不想解决它。如果你这样做 - 这是一种方法:

  1. 使用名为“MasterSheet”的工作表创建工作簿:这是您放置所有信息的地方
  2. 为每个管家创建一个单独的工作表 - 打电话给你的工作表“Katie”,“Sue”等 - 每个员工一个(无论他们今天是否在列表中)
  3. 在“模块”中添加以下代码:从工作簿中,按Alt-F11,然后(在VBA编辑器中)插入...模块并粘贴此代码:
  4. 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”。点击“运行”

    嘿,嘿!每个管家都有一张床单,房间需要等等。

    显然你可以修改它以更好地满足你的需要 - 格式化,要复制的字段数等等。但我希望这能让你前进。