我正在尝试将统计数据从单个单元65 Rush Yds, 1 Rush TD, 1 Fum Lost, 105 Rec Yds, 1 Rec TD
格提取到各个列 Rush Yds: 65
Rush TD: 1
Fum Lost: 1
Rec Yds: 105
Rec TD1
使用 MID() 提取 TD 非常简单,因为我知道使用公式它总是只领先 2 个位数
=IF(ISERROR(MID(A3,FIND("Pass TD",A3)-2,1)),0,MID(A3,FIND("Pass TD",A3)-2,1))
我所苦苦挣扎的是提取 Rec Yds 和 Rush Yds,因为它们可以是 1-3 位数字(1-999)之间的任何数字,也可以位于原始单元格的中间或开头。
答案1
您可以尝试这个:(假设只有逗号和空格来分隔数据)
Rec Yds
例如,在 A2 中查找65 Rush Yds, 1 Rush TD, 1 Fum Lost, 105 Rec Yds, 1 Rec TD
找到目标字符串索引并在那里修剪它(注意末尾有空格),然后修剪结果两端的所有空格,您将得到
65 Rush Yds, 1 Rush TD, 1 Fum Lost, 105
公式:(
=TRIM(LEFT(A2,FIND("Rec Yds",A2)-1))
我们把它放在 B2 中)将所有逗号(,)替换为空格,您将得到
65 Rush Yds 1 Rush TD 1 Fum Lost 105
公式:(
=SUBSTITUTE(B2, ",", " ")
我们把它放在 B3 中)用大量空格替换每个空格(这里我们使用 10 个空格),你会得到
65 Rush Yds 1 Rush TD 1 Fum Lost 105
公式:(
=SUBSTITUTE(B3, " ", REPT(" ", 10))
我们把它放在 B4 中)从右侧获取 10 个字符,您将获得
105
:公式:(
=RIGHT(B4, 10)
我们把它放在 B5 中)修剪两侧,你将得到最终结果
105
公式:
=TRIM(B5)
然后,您可以将所有这些公式组合成一个(它可能看起来很复杂而且很丑陋)添加一些错误检查
您提取的数字少于 5 位数字,因此您可以在步骤 3 中使用 5 个或更多空格,并在步骤 4 中采用相同数量的字符。(这里我们使用了 10)
答案2
如果您拥有具有该FILTERXML
功能的 Windows Excel 2013+,则可以拆分字符串,然后检查C1:I1
相应的组件。
- 确保第 1 行中的标签与统计字符串中的“标签”相同。(如果不可能,则使用辅助行)
C2: =SUBSTITUTE(IFERROR(FILTERXML("<t><s>" & SUBSTITUTE($B2,",","</s><s>") & "</s></t>","//s[contains(.,'" &C$1 & "')]"),0),C$1,"")
请注意,在上面的结果截图中,Fumbles
为零。这是因为没有Fum Lost
列。您可以添加一个同名的列,或者您可以根据您想要的结果使用其他技术