我有一个随机的问题。我正在尝试将 Silk 中的数百个步骤转换为 Jira 故事和子任务。不幸的是,我得到的导出非常笨重,并且事实证明比我最初预期的要困难。
CSV 结构:
家长(故事) | 测试名称(子任务) | 步骤名称 | 行动 | 结果 |
---|---|---|---|---|
大测试1 | 测试1 | 步骤1 | 做这件事 | 结果 |
步骤2 | 做接下来的事情 | 结果 | ||
步骤3 | 做其他事情 | 结果 | ||
大测试1 | 测试2 | 步骤1 | 做这件事 | 结果 |
步骤2 | 做这件事 | 结果 | ||
大测试2 | 测试1 | 步骤1 | 做这件事 | 结果 |
步骤2 | 做这件事 | 结果 |
等等。这种情况会持续一段时间。大测试的测试名称数量是可变的,每个测试的步骤数也是可变的。
我想要的是获得一个描述列,该列将兼作 Jira 中预先格式化的描述
例如
家长=故事概要
测试名称 = 故事附带的子任务摘要
描述=
步骤名称 | 行动 | 结果 |
---|---|---|
步骤1 | 做这件事 | 结果 |
步骤2 | 做接下来的事情 | 结果 |
步骤3 | 做其他事情 | 结果 |
我尝试将多个列添加到源表中,并使用连接来获得我需要的结构,但我无法找到一种方法来做到这一点,而不添加大量列来在其上方添加先前的值。
我向下扩展了测试名称,因此每个步骤都相同。
我目前最有效的想法是:
="||"&[Step Name]&"||"&[Action]&"||"&[Result]&"||"&char(10)
返回:
||Step 1 ||Do this thing ||Outcome ||
然后使用 IF 检查测试名称是否与上面的行相同,然后将它们连接在一起,但我只能让它适用于 2 行。然后我必须添加列来检查是否还有另一行等,这......不太好。
我知道我在某个地方遗漏了一些东西,可以让这件事变得更容易。任何建议将不胜感激,即使它只是为我指明了正确的方向。我在尝试用谷歌搜索我的意思时遇到了严重的问题。理想情况下,我不想单独创建这些项目,因为这将是一场噩梦。
我正在研究尝试一些带有枢轴的东西,然后从那里开始,但也遇到了困难。
我知道这可能措辞不好,但这是我能描述的最好的了
如果您有MS365,您可以使用以下:
=LET(
descriptions, C2:C8 & "||" & D2:D8 & "||" & E2:E8,
stories, SCAN("", A2:A8, LAMBDA(a, v, IF(v = "", a, v))),
sub_tasks, SCAN("", B2:B8, LAMBDA(a, v, IF(v = "", a, v))),
unique_stories_and_tasks, UNIQUE(HSTACK(stories, sub_tasks), FALSE, FALSE),
grouped, BYROW(
unique_stories_and_tasks,
LAMBDA(x,
LET(
story, INDEX(x, 1, 1),
sub_task, INDEX(x, 1, 2),
filtered, FILTER(descriptions, (stories = story) * (sub_tasks = sub_task), ""),
TEXTJOIN(CHAR(10), TRUE, filtered)
)
)
),
HSTACK(unique_stories_and_tasks, grouped)
)
=C2:C8 & "||" & D2:D8 & "||" & E2:E8
连接步骤名称、操作和结果。
=SCAN("", A2:A8, LAMBDA(a, v, IF(v = "", a, v)))
填写故事栏的空白行。
=SCAN("", B2:B8, LAMBDA(a, v, IF(v = "", a, v)))
填写子任务栏中的空白行。
那么主要的分组逻辑在
BYROW
:
对于每个
story + sub task
,它过滤掉相关的步骤(或描述),并将它们与 char(10) 连接起来