列出多行中每个单元格的多行不同值

列出多行中每个单元格的多行不同值

给定一列中的一组行,假设为 D1 - D3,每个单元格(1-3)包含多行多个单词。

将每个单词视为一个“短语”,如何列出此列中多行中的每个不同短语?

举个例子来说明我的意思:

 |   D   |
 ---------
1|Hello  |
 |World  |
 |Apple  |
 ---------
2|Apple  |
 |Orange |
 ---------
3|Orange |
 |Hello  |
 |World  |

将输出E1以下内容到另一列(例如):

 |   E   |
 ---------
1|Hello  |
 |World  |
 |Apple  |
 |Orange |

答案1

尝试使用以下公式:

在此处输入图片描述


• 单元格中使用的公式E1

=LET(
     α, CHAR(10),
     φ, D1:D3,
     δ, LEN(φ)-LEN(SUBSTITUTE(φ,CHAR(10),))+1,
     TEXTJOIN(α,,UNIQUE(TOCOL(TEXTSPLIT(TEXTAFTER(α&φ,α,SEQUENCE(,MAX(δ))),α),3))))

  • α表示CHAR(10)
  • φ表示单元格范围Column D D1:D3
  • δ表示每个单元格使用的单词数LEN(φ)-LEN(SUBSTITUTE(φ,CHAR(10),))+1
  • 按列拆分使用TEXTSPLIT(TEXTAFTER(α&φ,α,SEQUENCE(,MAX(δ))),α)
  • TOCOL()数组转换为单列
  • UNIQUE()函数获取唯一值
  • TEXTJOTIN()CHAR(10)使用分隔符包装到一个单元格
  • 最后但同样重要的一点是,请记住通过按ALT+ H+W或从HomeTab 单击Wrap Text“组对齐”来换行单元格。

您还可以使用LAMBDA()名为的辅助函数REDUCE,但使用第一种方法更好,

在此处输入图片描述


• 单元格中使用的公式E1

=TEXTJOIN(CHAR(10),,DROP(UNIQUE(TOCOL(REDUCE("",D1:D3,LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,CHAR(10))))),3)),1))

上述公式可以简化,但我TEXTJOIN()首先尝试避免包装函数,因为它有字符限制,而且我们不知道 OP 的数据有多大。但是,您也可以这样做:

在此处输入图片描述


• 单元格中使用的公式E1

=TEXTJOIN(CHAR(10),,UNIQUE(TEXTSPLIT(TEXTJOIN(CHAR(10),,D1:D3),,CHAR(10))))

答案2

这也可以用来:

=LET(e,CHAR(10),TEXTJOIN(e,,UNIQUE(TOCOL(TEXTSPLIT(TEXTAFTER(e&TEXTJOIN(e,1,D1:D3),e,ROW(1:99)),e),2))))

相关内容