如何用单公式或列首公式生成书籍与唯一子标题列表
需求说明
现有A2:B9范围的书籍与子标题数据,需生成去重且重复书籍名称置空的列表,以下是具体内容:
原始数据
| 书籍(BOOK) | 子标题(SUBTITLE) |
|---|---|
| BR | ELE |
| BR | INT |
| BR | PI |
| BR | INT |
| BR | PI |
| EF | ELE |
| EF | INT |
| EF | INT |
期望输出格式
| 书籍(BOOK) | 子标题(SUBTITLE) |
|---|---|
| BR | ELE |
| INT | |
| PI | |
| EF | ELE |
| INT |
现有实现方法
方法一
- D2单元格公式:
=IF(COUNTIFS($A$2:$A$9, $A2, $B$2:$B$9, $B2)=1, $A2, "") - E2单元格公式:
=IF(COUNTIFS($A$2:$A2, $A2, $B2:$B2, $B2)=1, $B2, "") - G2单元格公式:
=FILTER(D2:E27,E2:E27<>"")
方法二
- D2单元格公式:
=SORT(UNIQUE(A2:B10),1,TRUE,2,TRUE) - G2单元格公式:
=ARRAYFORMULA(IF(D2:D7=D1:D6, "", D2:D7)) - H2单元格公式:
=ARRAYFORMULA(E2:E7)
优化方案
方案1:单公式生成完整结果(Google Sheets适用)
在任意空白单元格输入以下公式,直接输出符合要求的表格:
=LET( unique_data, SORT(UNIQUE(A2:B9), 1, TRUE, 2, TRUE), book_col, INDEX(unique_data,,1), sub_col, INDEX(unique_data,,2), cleaned_book, ARRAYFORMULA(IF(book_col=OFFSET(book_col,-1,0),"",book_col)), HSTACK(cleaned_book, sub_col) )
逻辑说明:
- 提取去重并排序的书籍-子标题组合
- 拆分出书籍列与子标题列
- 对比当前行与上一行的书籍值,重复则置空
- 合并处理后的两列得到最终结果
方案2:分列单公式实现(Google Sheets/Excel 365适用)
- 书籍列(如D2):
=ARRAYFORMULA(LET( unique_books, INDEX(SORT(UNIQUE(A2:B9)),,1), IF(unique_books=VSTACK("", unique_books), "", unique_books) )) - 子标题列(如E2):
=INDEX(SORT(UNIQUE(A2:B9)),,2)
逻辑说明:
- 书籍列通过在去重数据前添加空值,对比相邻行书籍名称,重复则置空
- 子标题列直接提取去重排序后的结果
内容的提问来源于stack exchange,提问作者BazR
相关产品推荐
相关产品推荐

