谷歌工作表-将唯一的单元格连接成一行



在使用函数时,我试图只获取唯一值

=JOIN(",",UNIQUE(FILTER(D$1:D$230,E$1:E$230=G1((

它正在工作,只是它获取的一些值本身就是数组,所以从我的过滤器的一个数据集来看:

22;14、21;15;6.19;1、13;1.19;14(冒号之间的每组在单独的一行上(

使用上面提到的join函数,我最终得到了一个具有值的单元格(让我们称之为值集Alpha(:

{22,{14,21},15,6,19,{1,13},1,14}(它不是这样写的,但我知道它就是这样处理的(

正如你所知,它阻止了第二个19的出现,因为它不再是唯一的,但我无法分解{14,21}的数组来阻止14出现两次。我想我可以在上面的值集Alpha上使用函数=split(I1,","(,它将每个数字拆分到它自己的单元格中,然后将其连接回来,只显示唯一的集合,但我一生都想不出如何在不包括重复的情况下将其连接在一起。感谢您的帮助。

试试这个:

=ArrayFormula(JOIN(", ",UNIQUE(QUERY(FLATTEN(TRIM(SPLIT(FILTER(D1:D230,E1:E230=G1),","))),"Select * WHERE Col1 Is Not Null"))))

事实上,如果你的Col-D和Col-E系列从上到下运行完整的列,你可以缩短一点:

=ArrayFormula(JOIN(", ",UNIQUE(QUERY(FLATTEN(TRIM(SPLIT(FILTER(D:D,E:E=G1),","))),"Select * WHERE Col1 Is Not Null"))))

在任何情况下,您都可以在中心看到FILTER

SPLIT以任意逗号分隔。

CCD_ 5从该CCD_ 6的结果中移除任何前导空格。

CCD_ 7形成所有结果的一列。要明白,它将使整个虚拟网格变平,其列宽将与Col-D范围内任何单元格中逗号分隔元素的最大数量一样多。如果最大元素是两个,那么SPLIT形成的虚拟网格将是两列宽——最右边的大多数单元格都是空白的。因此,当您FLATTEN时,这些空格仍将插入列表中。(见下文。(

QUERY如上所述删除空白,将列表压缩为剩余非空值的连续垂直数组。

UNIQUE剔除重复项。

最后,JOIN使用逗号空间连接。

最新更新