根据另一个表扩展查询表行

根据另一个表扩展查询表行

我在 SharePoint 中有一个列表/表格,正尝试为其创建一个项目 ghantt,并通过查询导入到 excel 中。我打算使用 excel 中的堆积条形图来执行此操作。我遇到的问题是,在此图表中,有多个列包含每个特定任务的日期(完成时间)。为了能够为每个项目创建一个 ghantt 作为总体 + 具体子任务,我需要扩展每个子任务的每一行(项目)才能制作堆积条形图。由于这个查询表的大小会发生变化,我想不出一种动态的方式来做到这一点。我基本上需要动态合并两个数据表和子任务表,然后我可以通过 vlookup/索引将正确的日期拉到正确的任务中并制作我穷人的 ghantt。

非常感谢您观看此文,

以下是一些示例数据:

在此处输入图片描述

子任务表:总体,工程,地面土地,建筑,能够动态添加项目是奖励

我想要的结果如下:

在此处输入图片描述

答案1

我认为您可以通过稍微整理一下列名并在 Power Query 中执行几个步骤来完成此操作。

使用“[任务] 开始”和“[任务] 结束”格式的起始列名称将有助于后续操作:

在此处输入图片描述

第一步是使用“数据>获取和转换数据>从表/范围”在该表上创建查询。

当 Power Query 编辑器打开时,选择包含日期的列,然后使用“转换>任意列>取消透视列>仅取消透视选定的列”:

在此处输入图片描述

这将为您提供具有“属性”和“值”列的新数据视图。

在此处输入图片描述

接下来,我们需要使用“数据透视列”命令。但要做到这一点,我们需要有一列仅包含一些内容,表明当前行是开始日期还是结束日期。因此,使用“添加列>常规>自定义列”并按如下方式配置它:

在此处输入图片描述

这是 StartEnd 列的公式:

if Text.PositionOf([Attribute],"Start") > 0 then
Text.Range([Attribute],Text.PositionOf([Attribute],"Start"))
else
if Text.PositionOf([Attribute],"End") > 0 then
Text.Range([Attribute],Text.PositionOf([Attribute],"End"))
else "Neither start nor end"

您可能希望将“值”列的数据类型转换为日期而不是日期/时间。接下来,我们需要一个仅包含任务名称的列。因此,使用“添加列>常规>自定义列”并按如下方式配置它:

在此处输入图片描述

以下是任务列的公式:

Text.Trim(Text.Replace([Attribute],[StartEnd],""))

(差不多了!)

接下来,我们可以右键单击属性列并选择“删除”。然后,选择 StartEnd 列并使用“Transform>Any Column>Pivot Column”,如下所示:

在此处输入图片描述

完成数据透视后,使用“主页”>“关闭并加载”,您将获得正确的数据透视查询:

在此处输入图片描述

相关内容