有多列范围内的唯一项目的VBA,如何筛选以前的结果多行?

介绍

我试图通过额外的sorting来增强一个基本的计划表(见下文)。

在这里输入图像说明

第一列列出资源。 每周有2列,每列20小时。

示例读数;

  • 在第30周,Aron在项目A上工作40小时。在第31周,他在项目A上工作20小时,在项目B上工作20小时。
  • Jeff不在WK30工作,在WK31工程C工作40

我的目标

  1. 在几周内生成一个独特的项目列表
  2. 能够根据项目名称进行过滤,并只获取在该项目上工作的资源行。 (没有特别需要过滤出同一行中的其他项目,所以如果我过滤项目“A”,我只想看到Aron和Dave的行)

我拥有的

基本上第1项涵盖如下:

第二列(Projects)是一个由VBA函数(取自这里 )生成的数组公式,它返回多列范围内的所有唯一项。 单元格公式如下所示,其中UniqueItems()的第二个参数确定是否仅返回唯一项目数(TRUE)或所有唯一值列表(FALSE)。

 =TRANSPOSE(UniqueItems($C$4:$H$6,FALSE)) 

什么不见​​了

我的目标列表中的项目2缺失。 如果我现在select项目的filter选项(见截图) 在这里输入图像说明

并过滤项目A,那么我只得到第5行,而不是第4行。 在这里输入图像说明

我将如何去正确过滤这个

允许使用VBA代码或指向我应该使用的常规公式函数的指针。 具有相同结果的完全不同的解决scheme也很好。 我想过关于数据透视表,但是我认为如果没有这个资源的工作,它就不能处理这个常见的空白单元格。

所使用的纸张可以从这里下载

恕我直言,你会好得多创build一个工作表作为一个规范化的数据库表,每行以下列一行:人,周,项目。 最后,列出最后一个小时数(如果需要,还可以select每个工作人员定制的小时数)

然后使用数据透视表构build您发布的视图(或您需要的任何其他报告视图)。

这将允许您创build多个数据透视表,这些数据透视表可以轻松回答以下问题:总计为项目X规划了多less小时? 在某个date? 每个时间段每个工作人员总共计划了多less小时 – 谁使用过多?
每个项目每个工人总共计划了多less小时? 等等

保持与报告分开的数据更安全,更模块化 – 我不希望VBA错误有可能破坏/删除原始数据。