我有两个范围:一个是标题列表(A列),一个是类别列表(在B列的另一张纸上)。两者都是由其他来源生成的,而且长度是动态的(即不能保证它们的大小相同)。
我需要用这些数据制作一个汇总表。我想取标题的第一个值,然后添加所有的类别,然后取标题的第二个值,然后添加所有的类别,等等。类似于。
HEADER 1
Role 1
Role 2
Role ...
HEADER 2
Role 1
Role 2
Role ...
以此类推
我试过各种方案,目前是这样的。
=ARRAYFORMULA( SPLIT(JOIN("|", A1:A6), "|") & "+" & JOIN("~", UNIQUE(Roles!B3:B)) )
这能让我得到一行,每一个标题都有一列,并附加了整个角色范围。例如,第一列有。
ON-SITE+Project Management & Creative Design~Production Staff~Video~Audio~
以此类推,整个工作表都是这样
理想的情况是,我应该再加两个SPLIT函数,把它分开到一堆列中,然后简单地转置成一列就可以了。然而,似乎在一个ARRAYFORMULA中你只能得到一个SPLIT实例。当我再添加一个SPLIT函数时。
=ARRAYFORMULA( SPLIT(SPLIT(JOIN("|", $A$1:$A$6), "|") & "+" & JOIN("~", UNIQUE(Roles!$B$4:$B)), "+") )
它只是简单地将第一列分割成两列,然后忽略其余的部分。如果我在其中添加第二个分割函数,我只得到Header。似乎你在ARRAYFORMULA中只能使用一次SPLIT,然后它就崩溃了。我读过一些关于JOIN和SPLIT在ARRAYFORMULA中似乎不能很好地发挥作用的文章。
有没有什么东西我可以添加或命令到这个里面,使它如愿以偿?我也对其他方法持开放态度,比如使用QUERY或REGEX(这些我对REGEX知之甚少)。我尝试使用TEXTJOIN和{}创建一个文字数组,但通过INDIRECT传递这个似乎从来没有工作。我还需要在gSheets内部解决这个问题--可惜没有脚本。