【问题标题】:Google Sheets - Join unique cells in a row谷歌表格 - 连续加入唯一的单元格
【发布时间】:2021-06-23 07:46:06
【问题描述】:

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

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

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

22; 14, 21; 15; 6; 19; 1、13; 1个; 19; 14(冒号之间的每一组都在单独的一行)

使用上面提到的连接函数,我最终得到一个带有值的单元格(我们称之为值集 Alpha):

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

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

【问题讨论】:

  • 你能展示一些样本数据然后是预期的输出吗?

标签: arrays sorting google-sheets unique


【解决方案1】:

试试这个:

=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 以任何逗号分隔。

TRIM 删除结果中的任何前导空格 SPLIT

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

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

UNIQUE 清除重复项。

最后,JOIN 加入逗号空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多