【问题标题】:Filtering specific number / removing text过滤特定数字/删除文本
【发布时间】:2020-09-29 06:01:04
【问题描述】:

这就是我的手机的样子,我应该只有手机号码(只有号码,根本没有文字)。但是,我不确定要使用哪个公式,因为中/左/右在这里并不完全有用(数字、链接、单词的长度不同)。

【问题讨论】:

  • 这些所有文本都在一个单元格中还是每个单元格中的每一行?
  • 全部在一个单元格中
  • 你可以试试:=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,CHAR(10)," ")," ","</s><s>")&"</s></t>","//s[preceding::*[2] = 'Mobile']")

标签: excel filter excel-formula


【解决方案1】:

假设文本在单元格 $A$1 中:

  1. 手机号码(数字)开始于:

=FIND("Mobile phone: +",$A$1)+LEN("Mobile phone: +")

  1. 假设手机号后面没有空格,其长度为:

=FIND("Phone: +",$A$1)-(FIND("Mobile phone: +",$A$1)+LEN("Mobile phone: +")+1)

  1. 所以手机的数值是:

=VALUE(MID($A$1,FIND("Mobile phone: +",$A$1)+LEN("Mobile phone: +"),FIND("Phone: +",$A$1)-(FIND("Mobile phone: +",$A$1)+LEN("Mobile phone: +")+1)))

您也可以使用My Excel Toolbox 中的Between 函数。这是该函数的简化版本:

Function Between(Text, BeginAfter, EndBefore)
    nFirst = InStr(1, Text, BeginAfter)
    If nFirst > 0 Then nFirst = nFirst + Len(BeginAfter)
    nLast = InStr(nFirst, Text, EndBefore) - 1
    Between = Mid(Text, nFirst, (nLast - nFirst + 1))
End Function

完整版具有更多功能。以您为例:

=TRIM(CLEAN(Between($A$1,"Mobile phone: +","Phone: +")))

【讨论】:

  • 只有拿出“值”才起作用,就这样,谢谢!
【解决方案2】:

用于新的 LET 函数(在 O365 中)(这将保留电话号码中的前导零

=MID(LET(X,TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A10,CHAR(10)," "))," ",REPT(" ",99)),SEQUENCE(99)*99,99)),INDEX(X,2+MATCH("Mobile",X,0))),2,99)
  • LET 函数允许在公式中使用两次相同的计算
    • 我们将字符串拆分为空格分隔的单词数组,用于LET
        TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A10,CHAR(10)," "))," ",REPT(" ",99)),SEQUENCE(99)*99,99))
  • 查找单词的位置(索引):Mobile

     MATCH("Mobile",X,0)
    
  • 在该位置添加两 (2) 个以获取手机号码

  • 使用MID 函数去除前导+

    • 如果要包含前导 +,请省略 MID
    • 如果某些数字没有前导 +,请将 MID 替换为 SUBSTITUTE,或者检查其他方式是否会导致不必要的返回。

【讨论】:

  • 我们中的一些O365还没有收到LET功能,但应该早就添加了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2019-07-17
  • 2013-08-08
相关资源
最近更新 更多