如何在排序源数据时阻止表格生效?

时间:2016-12-13 19:24:15

标签: excel excel-vba excel-formula vba

我有一个包含10列用于项目管理的表。每行代表一个要完成的任务。我想在仪表板上总结这些信息(相同的工作簿,不同的表)。摘要将显示未标记为完成的“下一个5任务”(包括过期任务)(源表中第9列的单元格值为“否”)。我想要显示的唯一三列是结束日期,项目和任务(8,1,2),按此顺序。行应首先按SOONEST结束日期排序,然后按下一行等排序。如果任务已过期,则应首先显示,最早的到期日期先出现。

但是,如果我改变了源表的排序方式,那么我正在调用新创建的“摘要表”。我不希望这种情况发生。

原始表格中的列(表1133)是(按此顺序):
项目|任务|类别|优先|所有者|努力|开始日期|结束日期|完成? |备注

在我的汇总表中,我使用这些公式来提取我想要的信息:

第1栏 - 截止日期:
    =INDEX('Master Task List'!B6:L31,MATCH("No",Table1133[Complete?],0),8)

第2栏 - 项目:
    =INDEX('Master Task List'!B6:L31,MATCH("No",Table1133[Complete?],0),1)

第3栏 - 任务:
    =INDEX('Master Task List'!B6:L31,MATCH("No",Table1133[Complete?],0),2)

输出是这样的:

截止日期|项目|任务
12/12 |营销|设计宣传册
12/13 |行政| Q1的完成费用 12/15 |秘密项目|安全的会议地点
12/15 |旅行大修|为当地机构撰写RFP 12/31 |品牌推广活动|发送电子邮件给媒体联系人

无论原始表如何排序,我都希望数据保持这种状态。但是,如果源表中的排序发生更改,则会在my中重新排列此新创建的表中的日期。

有没有办法通过对原始数据进行排序来阻止我的汇总表生效?或者有更好的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我们可以使用Power Query addin by MS来获得理想的结果,而且相当容易。

考虑一下这样的原始数据(源表,你的有10列,我的5,但想法是一样的。)
enter image description here

现在我们使用电源查询。将光标放入表中,然后选择“从表创建查询”。

在Excel 2016中,你可以得到这个(在右下角的“APPLIED STEPS”窗格中只有两步。当你应用过滤器和排序以及其他步骤时,会出现其他步骤。):
enter image description here

现在,您需要“教”查询每次刷新时要执行的操作。 我选择了以下步骤:

  1. 过滤已完成的任务,因此只剩下FALSE enter image description here
  2. 从A-Z对截止日期进行排序。即使源数据已按正确的顺序排序,您也应该明确地这样做。请记住,我们正在教授查询,每次刷新时该做什么。 enter image description here
  3. 删除了不必要的列(完整,潜在客户)。请注意,即使您从查询中删除它们,过滤器仍然适用。 enter image description here
  4. 查找“保留行”并将其设置为最大值5。 enter image description here
  5. 结果如下:
    enter image description here