OpenOffice表格如何用函数提取出现超5次的值合并到同一单元格

OpenOffice Calc提取J列出现超5次的区域编码并汇总到单个单元格的方法
直接用数组公式即可实现,无需编写宏,以下方案适配所有OpenOffice版本:
- 如果你使用的是Apache OpenOffice 4.2及以上版本(自带
TEXTJOIN函数),选中要输出结果的单元格,输入以下公式后,按Ctrl+Shift+Enter三键确认数组计算:
=TEXTJOIN("、",TRUE,IF(COUNTIF(J:J,J$2:J$999)>5,IF(MATCH(J$2:J$999,J:J,0)=ROW(J$2:J$999),J$2:J$999,""),""))
参数调整说明:
J$2:J$999替换为你实际存储编码的数据范围,不要直接选中整列,否则会大幅拖慢表格计算速度公式里的
、是结果之间的分隔符,可以根据需求换成逗号、空格等其他符号第二个参数
TRUE表示自动跳过空值,不会把空白单元格统计进结果如果你使用的是更早的OpenOffice版本,没有内置
TEXTJOIN函数,就用基础函数拼接的数组公式,同样按Ctrl+Shift+Enter三键确认:
=LEFT(CONCAT(IF(COUNTIF(J:J,J$2:J$999)>5,IF(MATCH(J$2:J$999,J:J,0)=ROW(J$2:J$999),J$2:J$999&"、",""),"")),LEN(CONCAT(IF(COUNTIF(J:J,J$2:J$999)>5,IF(MATCH(J$2:J$999,J:J,0)=ROW(J$2:J$999),J$2:J$999&"、",""),"")))-1)
这个公式会自动过滤重复编码、筛除出现次数不足5次的值,同时自动去掉拼接结果末尾多余的分隔符。
公式核心逻辑
- 用
COUNTIF逐行统计每个编码在J列的总出现次数 - 用
MATCH(值,列,0)=当前行号的判断做去重,只保留每个编码第一次出现的行,避免同一个符合条件的编码被重复拼接多次 - 两层
IF判断先过滤出现次数不达标的值,再过滤重复值,最后把符合要求的编码拼接成单个字符串
注意:数组公式必须按
Ctrl+Shift+Enter三键确认,直接按回车只会计算第一行数据,结果会出错。如果J列同时存在数字格式和文本格式的同内容编码,COUNTIF会判定为两个不同值,建议提前把整列单元格格式统一。
内容的提问来源于stack exchange,提问作者Evgenyi Mihalev
相关产品推荐
相关产品推荐

