Excel 从其他表格中获得某些年份

Excel 从其他表格中获得某些年份,excel,excel-formula,vba,Excel,Excel Formula,Vba,在工作中,我们有一个工作表,其中包含多个(40-50)工作表。每个工作表代表一项特定的研究。每张工作表上都有几个人的姓名、姓氏、开始学习(日期)、生日等。我们有一张工作表,上面有一个概述。(工作表研究1、工作表研究2、工作表研究3) 有没有办法,我可以在概览上放一个专栏,然后过滤加入研究的人。(所以所有在2016年参加研究的人,但不是那些没有参加的人。)我有一个列,列有研究的开始日期,但人们可以在研究开始后参加研究 我已经尝试过使用过滤器,尝试过一些数据验证的东西,但我还没有找到解决方案。有人能

在工作中,我们有一个工作表,其中包含多个(40-50)工作表。每个工作表代表一项特定的研究。每张工作表上都有几个人的姓名、姓氏、开始学习(日期)、生日等。我们有一张工作表,上面有一个概述。(工作表研究1、工作表研究2、工作表研究3)

有没有办法,我可以在概览上放一个专栏,然后过滤加入研究的人。(所以所有在2016年参加研究的人,但不是那些没有参加的人。)我有一个列,列有研究的开始日期,但人们可以在研究开始后参加研究


我已经尝试过使用过滤器,尝试过一些数据验证的东西,但我还没有找到解决方案。有人能让我走上正轨吗

我在这里做一些假设:

  • 我假设一项研究的每个工作表都采用相同的格式
  • 研究中的人员(您想要的数据)在每张纸上的标准化位置
一种解决方案是在VBA中编写一些代码。您可以遍历每个工作表(显然不称为“概述”),并将要检查的详细信息存储的范围指定给变量,然后遍历该范围内的每个单元格,并在数组中记录符合条件的任何人的姓名

例如,如果您的每张学习表都有一份参与者列表,如下所示:

您可以将范围变量定义为[Worksheet].range(“A5:A12”),并说:

For Each <cell> in <range>.Cells
If Year(<Worksheet>.Cells(<cell>.Row, <cell>.column + 1).Value) = 2017 Then
<assign the contents of <cell> to an Array>
Next <cell>
每个in.单元格的

如果年份(.Cells(.Row、.column+1).Value)=2017,则
下一个
浏览完每个工作表后,可以将数组的内容输出到任何所需的位置,无论是在概览表上还是其他位置。
这将是一个基本的想法,一种方法来做到这一点。不过,我要强调的是,您的数据听起来正是MS Access数据库的理想用途(我从个人经验中知道,有些公司/部门害怕任何不是Excel的东西,所以我感到您的痛苦!)

我不是Excel专家,但是50张工作表听起来似乎处于不可维护和容易出错的边缘。如果我是你,我会将这些数据放入一个数据库,在那里很容易回答你的问题。我知道这一点,我总是建议使用DB(sql、access或filemaker),但这是“早期”有人制作的excel:d。看来,我必须向他们介绍其中一种解决方案。无论如何,谢谢你看一看。