Have a Question?

如果您有任务问题都可以在下方输入,以寻找您想要的最佳答案

excel截取字符串中的一部分的方法,Excel VBA 截取字符串 substring

excel截取字符串中的一部分的方法

题图来自Unsplash,基于CC0协议

导读

  • Excel 截取字符串函数 LEFT RIGHT MID
  • Excel 提取字符串中特定字符之前的部分
  • Excel 截取字符串中间几位的方法
  • Excel 如何使用公式截取字符串中的数字
  • Excel VBA 截取字符串 substring
  • Excel 中如何从一串字符里"切出"想要的部分?别担心,这里有几个巧妙的函数能帮你轻松完成这个任务:LEFT、RIGHT、MID,以及它们在实战中的组合运用。

    最基础的开始:LEFT、RIGHT、MID

    这三个函数是提取文本的"工作三角"。

    • LEFT([文本或单元格引用], [数字])

      • 功能:从选定单元格中的文本左侧开始截取指定数量的字符。
      • 例子:
        • =LEFT(A2, 3) - 假设 A2 单元格内容为 "计算机科学",此公式会返回 "计科"。
        • =LEFT(D1) - 如果 D1 内容为 "王小明",且不提供字符数,则默认截取第一个字符,结果是 "王"。
        • 应用场景:提取文本编码的前缀(如订单号前几位),姓名中的姓氏(如果姓在前),手机号码的前几位区号。
    • RIGHT([文本或单元格引用], [数字])

      • 功能:从选定单元格中的文本右侧开始截取指定数量的字符。它和 LEFT 很像,只是截取方向是反的。
      • 例子:
        • =RIGHT(A2, 4) - A2 内容 "XXXX-YYY-1234"(总长度10),此公式会提取最后 "1234" 四个字符。
        • =RIGHT(D1) - 类似于 LEFT 函数,如果 D1 内容为 "王小明",且不提供参数,则返回 "明"(如果姓氏较长,则返回姓氏)。
      • 应用场景:提取电话号码的后缀,网站域名,条形码结尾数字,来自另一个工作表的数据的后若干位。
    • MID([文本或单元格引用], [起始位置], [要截取的字符数])

      • 功能:从选定单元格中的文本中间开始截取指定长度的字符。你需要告诉它起点和长度。
      • 例子:
        • =MID(A2, 8, 4) - A2 内容为 "全国高考(计算机专项)"+"考生编号:2077****1234",此公式从第8个字符开始(假设有空格或固定分隔),提取4个字符,如果恰好对应 "2025" 年份,则可能返回 "2025"。
        • =MID(A2, FIND("第", A2), 5) - 提取从 "第" 字符开始后的五个字符(如 "一章")。
      • 应用场景:从简历文本中提取职位名称,从带有固定前缀/后缀的字符串中提取中间变动部分(如学号、工号),从长字符串中精确切出混合了数字和字符的部分。

    超纲一点?多种情况的提取方法

    除了固定长度,我见过太多需要从不同位置提取的情况了:

    1. 固定位置,不关心总长度 想想看,员工资料本,总想从资料中提取生日。是呀,或者说学号有规律变化——但就是得从第四个到第七个字符中抓人。这时用MID稳当: =MID(A2, 4, 4),这差不多是万金油组合。

    2. 不确定长度,得找参照 这点常常有麻烦,比如你从一个大段文字里找网址,但网址长度不一。就靠一个字符来定位:

      • =MID(A2, 1, LEN(A2)- LEN("http")),彼时彼刻,可能是从第一个字符截到避免http开头以外的部分。 没错,但用起来变幻莫测,结合FIND或SEARCH函数追踪特定字符位置是高级应用,比如找特定字符串后的内容。
    3. 提取数字串 对招需求的是,像订单、编码这些混合了汉字和数字的字符串,只想提取数字部分。 被动应对的方式有点无奈,但勉强可用的案例是:`=SUMPRODUCT(--MID(SUBSTITUTE(A2, {" ",",",">","<"}, REPT(" ", LEN(A2))) &"!"),哦,太复杂了。不现实?那就真心感到可惜了。

    4. 处理字符串前后的"边角料"(空格等) 02-555-1234这类号码,居然有空格?提取后会带前导或尾随空格。解决好: =TRIM(MID(A2, 3, 8))。别小看TRIM,它是突然想到的良策。

    5. 处理复杂的"中间"提取 如果字符串在变化,你能负担值又不知道确切位数?=MID(A2, FIND("-", A2)+1.START), 不,这里应该用EXT和IFERROR,不然遇上找不到"-"的情况就麻烦了。

    VBA中也能用substring?没错!但那是另一个变局

    如果你会写宏,和字符串打交道的变成字符串的Substring属性: Dim strLst(1) As String:然后从中提取部分。 VBA在全局处理文本比公式强?我个人认为,对于复杂逻辑或统一流程,VBA确实有时候更从容,而且性能可靠,正因如此,遇到想要精简公式、又得批量处理、还是放弃单公式挣扎的情况,VBA才是不二之选。

    结语:函数大法好,还是温馨提示!

    Excel 提供的 LEFT、RIGHT、MID 等函数确实非常实用,能高效完成从文本中提取所需信息的任务。在使用这些函数时,需要考虑以下几点:

    1. 明确对象:你想截取字符串的哪个部分?左边、右边,还是中间?
    2. 确定位置和长度
      • LEFT/RIGHT:只需知道提取几个字符。
      • MID:需要知道从哪个字符位置开始,以及要提取几个字符。
    3. 考虑Variable情况:如果数据长度不固定,务必使用 LIKE 或其他函数找出固定的开始点(如 FIND/SEARCH)。
    4. 数据范围:前提必须保证你的单元格内有足够的字符供提取。例如,使用MID 从第10位开始提取,若该位置不存在,函数会在可行时提取,或引发错误。
    5. 组合应用:别局限于一个函数解决所有问题,尝试结合用 LET、IFERROR、SEARCH/FIND 等函数组合,让提取过程更加智能和灵活。

    学会这些方法,你就能在复杂的Excel世界中游刃有余地处理各种文本数据了。试试以上技巧,你会发现字符串截取看似灵活而又规则,掌握后便能如虎添翼,轻松处理解析数据信息。

    © 版权声明

    本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com