使用 excel 在单个单元格内过滤

Filtering within a single cell using excel

我有一个包含两列(A 和 B)的电子表格。

A 列是 funds/companies 的列表,B 列是公司参与的融资轮次。

每个单元格中有多个值,用分号 (;) 分隔。

示例:

Depixus, Series A, 2021 ; Egle Therapeutics, Series A, 2022 ; Amolyt Pharma, Series B, 2020.

我的问题是有没有一种方法可以过滤单元格中的值。目前,B 列单元格中的所有值均未按年份顺序排列(2022、2021、2020 等)。

我需要按降序获取它们:

Egle Therapeutics, Series A, 2022 ; Depixus, Series A, 2021 ; Amolyt Pharma, Series B, 2020) 

以一种不需要手动重做的高效快速方式。

在答案中使用公式时:

使用 Office 365 和 TEXTSPLIT()(在撰写本文时目前仅适用于内部测试版频道):

=LET(arr,TRANSPOSE(TRIM(TEXTSPLIT(A1,";"))),yr,RIGHT(arr,4),TEXTJOIN(" ; ",,SORTBY(arr,yr,-1)))


使用适用于 PC 的 Office 365 中可用的当前公式:

=LET(arr,TRANSPOSE(TRIM(FILTERXML("<a><b>"&SUBSTITUTE(A1,";","</b><b>")&"</b></a>","//b"))),yr,RIGHT(arr,4),TEXTJOIN(" ; ",,SORTBY(arr,yr,-1)))

所以,这就是我 尝试过的,


使用两个 O365 Insiders Beta Channel 函数 -- TEXTSPLIT() & HSTACK() with Regular O365 Functions with LET() , TEXTJOIN() & SORT() 函数,

• 单元格 A5

中使用的公式
=LET(a,TEXTSPLIT(SUBSTITUTE(A1,".",""),," ; "),b,RIGHT(a,4)+0,c,HSTACK(a,b),
TEXTJOIN(" ; ",,INDEX(SORT(c,2,-1),,1))&".")

使用 O365 函数 --> LET(), TEXTJOIN() & SORT(), with Regular Excel 函数,FILTERXML() & CHOOSE()

• 单元格 A13

中使用的公式
=LET(a,FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(A1,".","")," ; ","</b><b>")&"</b></a>","//b"),
b,RIGHT(a,4)/1,TEXTJOIN(" ; ",,INDEX(SORT(CHOOSE({1,2},a,b),2,-1),,1))&".")