Excel如何编写公式将带数量标注的单元格内容转为重复值逗号分隔串
Excel单元格内容批量重复转换公式方案
默认原始数据存放在A1单元格,你可根据自己使用的Excel版本选择对应方案:
适用Excel 365/2021及以上版本(支持动态数组)
单个公式即可完成全部转换:
=TEXTJOIN(",",TRUE, LET( arr,TEXTSPLIT(TRIM(A1),","), num,IFERROR(TEXTBEFORE(arr,"("),arr), cnt,IFERROR(--TEXTBEFORE(TEXTAFTER(arr,"(",,"",1),"pcs"),1), exp,REPT(num&",",cnt), LEFT(exp,LEN(exp)-1) ) )
公式逻辑说明:
- 先用
TRIM去除原始内容首尾多余空格,再用TEXTSPLIT按逗号拆分为数组 - 提取每个元素中
(前面的数字编号,无括号的元素直接返回本身作为编号 - 提取括号内的数字(去除
pcs后缀)作为重复次数,无括号的元素默认重复次数为1 - 按次数重复编号+逗号的组合,最后删除每个组合末尾多余的逗号
TEXTJOIN第二个参数设为TRUE,自动忽略所有空值后拼接成完整字符串
适用旧版Excel(无动态数组功能)
需搭配辅助列实现:
- B1单元格输入内容拆分公式,下拉到足够覆盖所有拆分结果的行数:
=TRIM(MID(SUBSTITUTE($A$1,",",REPT(" ",999)),ROW(A1)*999-998,999))
- C1单元格输入编号提取公式,下拉:
=IF(B1="","",IFERROR(LEFT(B1,FIND("(",B1)-1),B1))
- D1单元格输入重复次数提取公式,下拉:
=IF(B1="","",IFERROR(--LEFT(MID(B1,FIND("(",B1)+1,99),FIND("pcs",MID(B1,FIND("(",B1)+1,99))-1),1))
- E1单元格输入重复内容生成公式,下拉:
=IF(B1="","",REPT(C1&",",D1))
- 最终拼接所有结果,删除末尾多余逗号:
=LEFT(PHONETIC(E:E),LEN(PHONETIC(E:E))-1)
注:如果旧版Excel不支持PHONETIC函数,可自行编写VBA自定义拼接函数实现最终合并。
内容的提问来源于stack exchange,提问作者Zeeshan Mughal
相关产品推荐
相关产品推荐

