根据列标题进行串联

时间:2019-07-10 06:57:08

标签: excel-formula

我从外部系统导出了CSV数据,其中许多字段可以容纳多个相关值。在用户界面中,这些字段的数据在单列中以逗号分隔。

我将定期需要导出此数据以更新Excel 2016中的数据。

在CSV导出中,这些字段中的每个附加值都会产生具有相同字段标题的另一列(例如Sprints | Sprints | Sprints),每一列都具有该字段中的一个值(例如S1 | S2 | S3)。值越多,列标题就越重复。

第1周的数据可能看起来像这样,右边是我想要的输出: enter image description here

下次我导出时,列可能会更改,数据可能看起来像这样。导入的数据甚至可能包含更多的comp数据列。同样,通过右侧的首选输出。 enter image description here

我已经进行了一些谷歌搜索,但是我看到的所有连接解决方​​案都与根据列中的值而不是列标题进行数据连接有关。

MAX(B1:D1)和MAXA(B1:D1)忽略文本值,并返回范围的0。每次更改CSV数据中的列数时,也需要手动设置范围

我需要每个Excel单元格/列中具有相同列标题/名称的每个字段的所有多个值(例如,S1 S2 S3),但无法控制任何给定字段中具有相同列标题/名称的列的数量导出。

或者,我可能只用最左边和最右边的列值(例如S1和/或S3)就能成功。

理想情况下,每次将CSV数据重新导入Excel后,无需任何其他手动干预即可修改范围。

1 个答案:

答案 0 :(得分:0)

我没有最好的解决方案,但是目前这应该有所帮助。

假设您的输入数据在Sheet1中,如下所示: enter image description here

然后进入Sheet2,
1.在A1单元格中,手动在Sheet1中添加与A1相同的标题,或使用公式=Sheet1!A1
2.对于列标题,请在单元格B1中使用此公式,将其扩展到同一行,直到得到零:

=INDEX(Sheet1!1:1,1,LOOKUP(2,1/(Sheet1!$1:$1=A$1),COLUMN(Sheet1!$1:$1))+1)
  1. 对于行值,将此公式复制到单元格A2中,并向两个方向扩展:
=TEXTJOIN(",",TRUE,INDIRECT(CONCATENATE("Sheet1!",ADDRESS(ROW(),MATCH(A$1, Sheet1!$1:$1,0)))):INDIRECT(CONCATENATE("Sheet1!",ADDRESS(ROW(),LOOKUP(2,1/(Sheet1!$1:$1=A$1),COLUMN(Sheet1!$1:$1))))))

这应该使您像预期的那样输出:
enter image description here