如何按换行拆分单元格元素并通过索引提取对应值?
提取Excel单元格内换行分隔的值(按索引获取)
当然可以实现,以下是几种常用方法,本质都是将换行分隔的内容转为可通过索引访问的结构:
方法1:使用TEXTSPLIT(Excel 365/2021及以上版本)
TEXTSPLIT可以直接将单元格内的换行内容拆分为动态数组,搭配INDEX就能按索引提取对应值:
- B1单元格输入:
=INDEX(TEXTSPLIT(A1, CHAR(10)), 1) - C1单元格输入:
=INDEX(TEXTSPLIT(A1, CHAR(10)), 2) - D1单元格输入:
=INDEX(TEXTSPLIT(A1, CHAR(10)), 3)
CHAR(10)代表单元格内的换行符,TEXTSPLIT会以此为分隔符把A1的内容拆成包含3个元素的数组,INDEX则按指定索引(1、2、3)取出对应位置的值。
方法2:兼容旧版Excel(用FILTERXML)
如果你的Excel版本没有TEXTSPLIT,可以用FILTERXML将内容转为可索引的节点集合:
- B1单元格输入:
=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(A1, CHAR(10), "</s><s>")&"</s></t>", "//s"), 1) - C1单元格输入:
=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(A1, CHAR(10), "</s><s>")&"</s></t>", "//s"), 2) - D1单元格输入:
=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(A1, CHAR(10), "</s><s>")&"</s></t>", "//s"), 3)
这个方法是通过SUBSTITUTE把换行符替换为XML标签,生成一个包含多个<s>节点的XML结构,FILTERXML提取所有节点后,再用INDEX按索引取值。
内容的提问来源于stack exchange,提问作者user22726736
相关产品推荐
相关产品推荐

