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

如何从字符串中提取数字至独立单元格?

提取日志路径后的次数数字到独立列的公式方案

需求说明

你的单元格内容是包含多条日志路径+对应次数的字符串,次数被<strong>标签包裹,需要将每个次数提取到单独的列中。示例内容:

/cygdrive/c/fol1/302047/file.log:<strong>0</strong>/cygdrive/c/fol1/302047/file.log.2022-09-07:<strong>2</strong>/cygdrive/c/fol1/302047/file.log.2022-09-08:<strong>3</strong>/cygdrive/c/fol1/302047/file.log.2022-09-09:<strong>1</strong>/cygdrive/c/fol1/302047/file.log.2022-09-10:<strong>0</strong>

目标是把0、2、3、1、0分别放入不同列。

方案一:Excel 365/2021(支持动态数组)

直接用FILTERXML提取所有数字并转置为列,公式放在目标区域的第一个单元格即可自动填充:

=TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"<strong>","</s><s>"),"</strong>","</s></t>"),"//s[number(.)=.]"))

原理:通过替换标签将字符串转为XML结构,再筛选出纯数字节点,最后转置成列。

方案二:旧版Excel(无动态数组支持)

需要给每个目标列单独写公式,提取第N个次数(N为1、2、3...):

  • 提取第1个次数:
=MID(A1,SEARCH("<strong>",A1)+8,SEARCH("</strong>",A1)-SEARCH("<strong>",A1)-8)
  • 提取第2个次数:
=MID(A1,SEARCH("<strong>",A1,SEARCH("<strong>",A1)+1)+8,SEARCH("</strong>",A1,SEARCH("</strong>",A1)+1)-SEARCH("<strong>",A1,SEARCH("<strong>",A1)+1)-8)

以此类推,每增加一列就嵌套多一层SEARCH定位下一个标签位置。

方案三:Google Sheets

用SPLIT+REGEXEXTRACT组合提取,公式放在第一个目标单元格:

=TRANSPOSE(REGEXEXTRACT(SPLIT(A1,"</strong>/"),":<strong>(\d+)"))

原理:先按</strong>/分割出每条日志的完整条目,再用正则提取每个条目中<strong>包裹的数字,最后转置成列。

注意点

优先通过<strong>标签定位次数,比单纯找冒号更可靠——因为日志路径本身包含冒号(比如/cygdrive/c/),会干扰冒号定位的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:05:18