You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FILTERXML将特定格式字符串解析为二维数组表格

字符串解析为两列数组的Excel公式实现

方法1:纯FILTERXML实现(兼容性更好)

你可以通过调整XML构造逻辑实现需求,无需额外拆分数组步骤:

=LET(
    case, A5,
    // 一次性替换逗号、x为XML节点分隔符
    full_xml, "<t><s>"&SUBSTITUTE(SUBSTITUTE(case, ",", "</s><s>"), "x", "</s><s>")&"</s></t>",
    // 提取所有节点内容后按2列重排
    all_nodes, FILTERXML(full_xml, "//s"),
    WRAPCOLS(all_nodes, 2)
)

如果你的Excel版本不支持WRAPCOLS函数,可以用以下兼容写法:

=LET(
    case, A5,
    full_xml, "<t><s>"&SUBSTITUTE(SUBSTITUTE(case, ",", "</s><s>"), "x", "</s><s>")&"</s></t>",
    all_nodes, FILTERXML(full_xml, "//s"),
    row_cnt, ROWS(all_nodes)/2,
    CHOOSE({1,2},
        INDEX(all_nodes, SEQUENCE(row_cnt, 1, 1, 2)),
        INDEX(all_nodes, SEQUENCE(row_cnt, 1, 2, 2))
    )
)

方法2:TEXTSPLIT实现(写法更简洁,仅支持Excel 365)

如果使用最新版Excel,用TEXTSPLIT处理逻辑更直观:

=LET(
    case, A5,
    // 拆分逗号分隔的所有条目
    items, TEXTSPLIT(case, ","),
    // 过滤包含x的有效条目
    valid_items, FILTER(items, ISNUMBER(SEARCH("x", items))),
    // 先拼接再拆分直接得到两列数组
    TEXTSPLIT(TEXTJOIN("|",, valid_items), "x", "|")
)

原公式问题说明

你之前的写法中,第二次SUBSTITUTE传入的是第一次拆分得到的垂直数组,拼接XML时没有保留分组关系,最终返回一维长数组,因此只能展示第一列内容。

内容的提问来源于stack exchange,提问作者mark fitzpatrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:30:01