将数据表显示为视觉对象

Showing datatable as a visual

我有一些数据,其中包括 2 个人的任务列表。

我想用以下格式表示此数据。

所以它看起来像下面。

如何使用公式实现此目的?

[编辑] 我不认为这个问题与 'Data Wrangling in Excel - Rearranging Columns and Rows' 相同,因为我的问题是关于以更像甘特图的格式反映时间表,而另一个问题似乎更多是关于转置数据。

不确定您是否在相同的 sheet 或新的 sheet 上获得了所需的输出,但我使用了从单元格 A1 开始的新的 sheet。源数据sheet在公式中被称为S1

假设:

  • Column C = 开始日期
  • Column D = 结束日期
  • 人员的条目组合在一起(Person1、Person1,然后是 Person2;永远不会是 Person1、Person2、Person1)
  • 不能在同一时间段内为某人分配两个不同的区域(例如,Person1 不能在给定月份有 A 和 B)
  • 您希望的日期始终是每月的第一天

Output/Formulas:

  • A1为空
  • A2: =INDEX('S1'!$A:$A,IFERROR(MATCH(A1,'S1'!$A:$A,0),1)+COUNTIF('S1'!$A:$A,A1))
  • A3:从A2
  • 复制下来的公式
  • B1: =IF(A1<>"",EDATE(A1,1),MIN('S1'!$C:$D))
  • C1J1:从 B1
  • 复制的公式
  • B2:=INDEX('S1'!$B:$B,MATCH(1,INDEX(('S1'!$A:$A=$A2)*('S1'!$C:$C<=B)*('S1'!$D:$D>=B),0),0))
  • B3C2J3:从 B2
  • 复制的公式

解释:

  • A2 公式: 查看前一个 Person 条目首次出现的位置(MATCH 部分),并计算它有多少条目(COUNTIF 部分)以确定行中的下一个 Person 条目(INDEX 部分)。 IFERROR 部分用于 return 第一个 Person 条目,假定它位于第 1 行。
  • B1 公式: 向前一个日期标题(EDATE 部分)添加一个月。第一个日期标题查找源数据中的最早日期(MIN 部分)。
  • B2 公式: 在您的源数据上使用具有多个条件的匹配项(人员条目必须与指定人员匹配,开始日期必须早于或等于日期标题,结束日期必须在日期标题之后或之上)。第二个 INDEX 创建一个组合条件结果数组(如果为真则为 1,如果为假则为 0),以及 MATCH return 是哪个条目。第一个 INDEX return 是任务(A、B 或 C)。