我想从单元格右侧第 7 个空格中提取一串文本。我不能使用分隔符的原因是某些名称的长度不同(例如 John Smith、John A. Smith、John Smith Jr.)。以下是两个单元格示例。一般来说,我只想提取数字,以便将它们放入单独的列中。
谢谢。
SMITH JOHN 388.58 388.58 .00 .00 .00 .00 .00
SMITH JR DAVID 1,373.71 261.94 19.89 462.50 354.64 274.74 .00
答案1
使用 A2 中的数据尝试,
=TRIM(RIGHT(SUBSTITUTE(A2, " ", REPT(" ", LEN(A2))), 7*LEN(A2)))
答案2
这个找到第一个数字并在那里分割:
=MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&"1234567890")),999)
答案3
我读得有点不同,你想把名字放在一列,把每个数字放在不同的列。
如果您拥有具有该功能的 Excel 2013+,FILTERXML
则可以使用以下命令:
对于名称:
=LEFT(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-6))-1)
对于数字:
=TRANSPOSE(FILTERXML("<t><s>" & SUBSTITUTE(A1," ","</s><s>") & "</s></t>","//s[last()-7]/following-sibling::*"))
如果你有最新版本的动态数组您可以正常输入第二个公式,它将溢出到相邻的 6 列。
如果不这样做,则需要将其作为七列范围内的数组输入,方法是
- 选择第一个单元格
- 将范围向右扩展 6 列
- 按住ctrl+shift并点击enter
答案4
另外一个选择
1] 要提取名称,请在 B1 中复制:
=LEFT(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)-1))
2]要将值提取到单个单元格,请在 C1 中横向和纵向复制:
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),(LEN($A1)-LEN(SUBSTITUTE($A1," ",""))-7+COLUMN(A1))*999,999))
或者,使用 FILTERXML 函数来提取值。
=FILTERXML("<a><a>"&SUBSTITUTE($A1," ","</a><a>")&"</a></a>","a/*[last()-7+"&COLUMN(A1)&"]")