Excel根据时间和名称读取数据

Excel根据时间和名称读取数据,excel,excel-formula,Excel,Excel Formula,我有一张表格,我们保存了所有项目和资源的详细信息。我需要知道资源在项目之间是否是免费的。 假设一个团队中有x个人,我需要知道在项目之间有人可以工作多久,以及下一个项目何时开始 例如: 表1:项目和资源详情 名称 项目 开始日期 结束日期 A. X 2019年1月1日 2019年3月31日 B Y 2019年1月5日 2019年5月1日 A. Z 2019年4月15日 2019年9月1日 我已将您的数据转换为Excel表格(使用Ctrl+T键盘快捷键),并使用以下公式: E2:=IF(MAX

我有一张表格,我们保存了所有项目和资源的详细信息。我需要知道资源在项目之间是否是免费的。 假设一个团队中有x个人,我需要知道在项目之间有人可以工作多久,以及下一个项目何时开始

例如: 表1:项目和资源详情


名称
项目
开始日期
结束日期
A.
X
2019年1月1日
2019年3月31日
B
Y
2019年1月5日
2019年5月1日
A.
Z
2019年4月15日
2019年9月1日

我已将您的数据转换为Excel表格(使用Ctrl+T键盘快捷键),并使用以下公式:

E2:
=IF(MAX(([Name]=[@Name])*([Start Date]>[@[End Date]])*[Start Date])>0,MAX(([Name]=[@Name])*([Start Date]>[@[End Date]])*[Start Date],“”)

F2:
=IF(ISNUMBER([@[下一个项目开始日期]),[@[下一个项目开始日期]]-[@[结束日期]],“”)


请注意,E2中的公式是一个数组输入的公式:您必须使用Ctrl+Shift+E将其输入Excel

我假设不需要获取第三个项目。首先,您应该获得唯一的名称(列
A
)。这可以像Google Sheet一样或通过使用
unique()
函数来完成。假设输入范围为
Sheet1!A2:A9
,在
表2
中,您可以通过在
A2
处输入以下数组公式来获取名字(
A
):

{=IFERROR(INDEX(Sheet1!$A$2:$A$9, MATCH(0,COUNTIF($A$1:A1, Sheet1!$A$2:$A$9), 0)),"")}
现在在
Sheet2
中添加一个helper列
G
。在
G2
上输入下面的公式,以获取当前匹配的第一个名称行索引(
A
):

添加另一个辅助列
H
。您可以像这样(在
H2
上)获得名字(
A
)的下一个匹配行索引:

请注意,
8
Sheet1的硬编码高度$A$2:$A$9
。如果输入范围更改,您也应该更改该值

现在您可以像这样获得当前项目名称(在
B2
):

以及下一个项目名称(位于
D2
):

当前项目结束日期(在
C2
):

下一个项目开始日期(在E2上)

然后持续时间很小(在
F2
):

然后复制
2:2
并粘贴到
3:9
。完成了


示例文件是。我用文件中的
ifError()
包装了每个单元格。

如果A有3个项目怎么办?有点不同的方法,但听起来你会从@Dcoder中受益。下面的答案有帮助吗?
=MATCH($A2, Sheet1!$A$2:$A$9, 0)
=MATCH($A2, OFFSET(Sheet1!$A$2:$A$9, $G2, 0, 8), 0)+$G2
=INDEX(Sheet1!$B$2:$B$9, $G2)
=INDEX(Sheet1!$B$2:$B$9, $H2)
=INDEX(Sheet1!$D$2:$D$9, $G2)
=INDEX(Sheet1!$C$2:$C$9, $H2)
=E2-C2