根据另一个数据集excel生成或填充单元格数据

时间:2017-10-24 11:51:43

标签: excel excel-formula

我有一个显示的数据集;

  • 员工姓名
  • 日期
  • 时间工作开始
  • 时间工作已经结束

dataset

现在我正在尝试使用工作表这样的报告,我可以从员工列表中选择某个员工姓名,以查看他/她在特定月份的工作时间。

report

我尝试了vlookup,但由于我需要通过两列加一行来查找,所以没有去哪里。

这可能吗?没有宏或vba。 感谢

4 个答案:

答案 0 :(得分:0)

由于名称和日期是唯一标识符,因此可以使用sumifs函数。

对于'time in'和'Rachel',这将看起来如下:

  =Sumifs(column ‘time in’ from data set, column ‘name’ from dataset, “Rachel”, column ‘date’ from data set, “10/01/2017”)

Rachel和日期也可以是引用的单元格。

答案 1 :(得分:0)

=AGGREGATE(15,6,ROW(SHEET1!$A$2:$E$22)/((SHEET2!$B$1=SHEET1!$B$2:$B$22)*(SHEET2!$A4=SHEET1!$C$2:$C$22)),1)

上述公式将获取符合您条件的行号。要提取所需信息,可以将行号放在INDEX公式中以获得以下内容:

=INDEX(SHEET1!$D:$E,AGGREGATE(15,6,ROW(SHEET1!$A$2:$E$22)/((SHEET2!$B$1=SHEET1!$B$2:$B$22)*(SHEET2!$A4=SHEET1!$C$2:$C$22)),1),COLUMN(A1))

您可以将上述内容放在第一个时间单元格中,然后向右和向下复制。如果标准不存在,您将看到错误。即没有该名称的人或该人的日期数据。为了避免这种情况,您可以将整个事物包装在IFERROR中,如下所示:

=IFERROR(INDEX(SHEET1!$D:$E,AGGREGATE(15,6,ROW(SHEET1!$A$2:$E$22)/((SHEET2!$B$1=SHEET1!$B$2:$B$22)*(SHEET2!$A4=SHEET1!$C$2:$C$22)),1),COLUMN(A1)),"Nothing found")

如果你想要一个空白而不是找不到任何东西,那就改变了#34;没有找到任何东西"到""如果要显示0,则为0。

注意:在这种情况下,Aggregate正在执行类似计算的数组。因此,您不希望完整列引用,因为它将导致执行大量不必要的计算。因为您有唯一的条目,所以在另一个答案中给出的SUMIFS选项是一个更好的选择。

答案 2 :(得分:0)

我认为数据透视表将为您完成工作。

  1. 员工姓名放在过滤器中,放置日期和 行中
  2. 从数据透视表中删除小计
  3. 将表格布局更改为表格和重复行
  4. 右键点击时间,然后选择取消组合
  5. enter image description here

    然后你有了下面的图片。

    enter image description here

答案 3 :(得分:0)

我有以下布局:

enter image description here

在B11中写下这个公式并向下拖动:

=INDEX($B$2:$E$5,MATCH($B$7&$A11,$B$2:$B$5&$C$2:$C$5,0),3)

在C11中写下并向下拖动:

=INDEX($B$2:$E$5,MATCH($B$7&$A11,$B$2:$B$5&$C$2:$C$5,0),4)

请注意,这些是数组公式,因此您需要使用CTRL + SHIFT + ENTER而不是普通Enter输入它们。

如果员工没有处理A11和A12中的某个日期,您将收到#NV错误。因此,您可以使用IFERROR围绕公式来避免这种情况。