【问题标题】:Keeping track of "No Shows" on roster跟踪名册上的“No Shows”
【发布时间】:2019-11-16 08:29:39
【问题描述】:

目前,我正在制定上课时间的时间表,无论该房间有多少座位,秘书都会将姓名添加到列表中,并显示他们是否已经通过了考试。经理们想知道有多少次医生可能没有出现。 A 列是座位号(没有实际作用),B 列是名称槽,它从主列表中拉出一个可搜索的列表,使用“=Cell(”contents“)”技巧,因为有太多的直落下。 C 列在 VLOOKUP 以检查他们当前的测试状态,以帮助不重复预订。最后,如果没有显示,D 列是一个复选框。

我有一张单独的表格来记录这些未出现的情况,它记录了姓名、计数为 1 以及他们跳过的日期。

问题1,有没有办法不必单独制作每个复选框并单独链接每个复选框?有 8 周的课程,有 60 多个座位。

问题 2,有没有办法让它只有在选中后才向此工作表添加行,这样数据透视表就没有 900 个空白行?

“NoShow”表上使用的代码:

=IF(Schedule!D5=TRUE,Schedule!B5,"")
=IF(A2<>"","1","")
=IF(Schedule!D5=TRUE,TODAY(),"")

【问题讨论】:

  • 如果您可以发布几行数据作为示例,这将有所帮助。此外,如果您愿意使用该解决方案,则可以使用 VBA 自动添加/删除复选框。
  • 我对此持开放态度,我目前对 VBA 一无所知。添加图片。
  • 我使用 countifs() 的组合来计算缺勤情况(D 代表 2 个时期,S 代表单身)并匹配一个学号...

标签: excel checkbox datestamp


【解决方案1】:

使用 Power Query 可以更轻松地完成此操作。在这个例子中,我有:

  • 每个工作表上有一个表格,用于每个培训日期。 “是”表示没有节目。
  • 每个表都被命名为 t_ 和表名。

然后,Power Query 将所有表合并到一个表中,并生成一个显示所有合并记录的表,该表使用数据透视表进行汇总,另一个具有唯一名称,可用于下拉菜单。

当您有新日期时,只需添加一个包含该日期表格的新工作表,填写信息并刷新计算。

这是合并数据表...

这里是没有显示的关键点...

要获取汇总表... 设置表格后,通过转到数据 > 获取和转换数据 > 获取数据 > 从其他来源 > 空白查询插入一个空白查询。

然后点击高级编辑器,删除所有现有文本并粘贴:

let
    Source = Excel.CurrentWorkbook(),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Name] <> "Summary")),
    #"Expanded Content1" = Table.ExpandTableColumn(#"Filtered Rows", "Content", {"Seat Number", "Name of Physician", "No Show?"}, {"Seat Number", "Name of Physician", "No Show?"}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Expanded Content1", "Name", "Name - Copy"),
    #"Removed Columns" = Table.RemoveColumns(#"Duplicated Column",{"Seat Number"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Name - Copy", "Date"}}),
    #"Extracted Text After Delimiter" = Table.TransformColumns(#"Renamed Columns", {{"Date", each Text.AfterDelimiter(_, "_"), type text}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Extracted Text After Delimiter",{{"Date", type date}}),
    #"Reordered Columns" = Table.ReorderColumns(#"Changed Type",{"Name", "Date", "Name of Physician", "No Show?"}),
    #"Renamed Columns1" = Table.RenameColumns(#"Reordered Columns",{{"Name", "Table Name"}})
in
    #"Renamed Columns1"

然后单击关闭并加载到 > 新工作表。

获取唯一名称表.... 按照上述相同步骤,但在新的空白查询中,粘贴此文本...

let
    Source = Excel.CurrentWorkbook(),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Name] <> "Summary")),
    #"Expanded Content1" = Table.ExpandTableColumn(#"Filtered Rows", "Content", {"Seat Number", "Name of Physician", "No Show?"}, {"Seat Number", "Name of Physician", "No Show?"}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Expanded Content1", "Name", "Name - Copy"),
    #"Removed Columns" = Table.RemoveColumns(#"Duplicated Column",{"Seat Number"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Name - Copy", "Date"}}),
    #"Extracted Text After Delimiter" = Table.TransformColumns(#"Renamed Columns", {{"Date", each Text.AfterDelimiter(_, "_"), type text}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Extracted Text After Delimiter",{{"Date", type date}}),
    #"Reordered Columns" = Table.ReorderColumns(#"Changed Type",{"Name", "Date", "Name of Physician", "No Show?"}),
    #"Renamed Columns1" = Table.RenameColumns(#"Reordered Columns",{{"Name", "Table Name"}}),
    #"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns1",{"No Show?", "Date", "Table Name"}),
    #"Removed Duplicates" = Table.Distinct(#"Removed Columns1")
in
    #"Removed Duplicates"

然后关闭并加载到 > 新工作表。

然后您可以选择汇总表和插入数据透视表中的数据。将名称添加到 Rows 部分,将 No Shows 添加到 Values 部分。在行标签列标题中,单击值过滤器 > 大于 0(以删除空白)。使用数据透视表,您可以双击未显示的数量,然后将创建一个新工作表,显示该计算的来源,因此不需要超链接。

【讨论】:

  • 非常感谢您的回复。是否必须在 PC 上安装 Power Query 才能工作?我有权添加它,但我很确定它会在其余部分被阻止。是否需要将当天的 5 节课分解为单独的工作表?
  • 这五个类不必位于单独的工作表中。我发布的示例假设每天一张,但 PQ 可以灵活地满足大多数需求。我确实认为 PQ 必须在机器上,但它是 Excel 2016 及更高版本的标准配置,并且是 2010-2013 的免费插件。 microsoft.com/en-us/download/…
  • 嗨,Jenn,我似乎对多个表有疑问,我不确定这是否是其他列似乎没有填充的原因,但我正在尝试将表命名为 t_20190805.1和 5,但它错误该字段,并且其他字段不填充名称或不显示。我什至摆脱了测试状态的列。对我正在寻找的任何想法?我感觉 .1-.5 不适用于您提供的查询代码。
  • 抱歉,Jenn,我发现我的列的名称不同,因此它们是空白的。我尝试在日期后的表名中使用下划线,但该字段仍然出错。汇总表还包括表名为“Query1”和“Query2”的行,这只是使用 Power Query 的本质吗?
  • @deltas2k 抱歉延迟回复。您能否发布一张您的表格的图片,然后也发布您的高级编辑器代码?这将帮助我帮助你。您对表名有正确的想法。避免使用点;下划线更好。我从表中过滤了查询名称。这可以在查询编辑器中完成,然后它们不会出现在工作表的摘要页面中。你知道怎么做吗?
【解决方案2】:

问题1,有没有办法不必单独制作每个复选框并单独链接每个复选框?有 8 周的课程,有 60 多个座位。 是的!请参阅以下建议的系统解决方案。

问题 2,有没有办法让它只有在选中后才向此工作表添加行,这样数据透视表就没有 900 个空白行?

是的,将您使用的范围格式化为“表格”,表格会自动添加行。与建议的解决方案结合使用。

建议的解决方案: 您应该能够使用 PowerPivot 找到解决方案,使用 (i) 由一个表(事实表)组成的简单数据模型跟踪课程日期和错过课程的人以及潜在参加者的主列表(查找/维度表),您可以在其中通过名称将课程跟踪表与潜在的参加者表联系起来,以及 (ii) 一个可以轻松总结谁错过的数据透视表。从数据透视表中,您可以根据需要创建很酷的图表或幻灯片

您的秘书只需更新事实表或维度表中的更改。如果座位号没有真正的用途,则将其排除在外是有意义的。

事实表列:日期、姓名、错过(分配 1) Dimension/LookUpTable 列:名称、所参加的测试、(其他相关信息)

注意,您在一个单元格中使用了全名(名字和姓氏)。如果您想要严格,您可能希望为每个名称分配它自己的唯一 ID,并在有两个相同名称的情况下将其用作 LookUp 表的主键。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多