设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1898|回复: 4

求助:提取字符串

[复制链接]
发表于 2017-3-9 17:35:13 | 显示全部楼层 |阅读模式
提取字符串中包含“套”的字符串

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2017-3-9 17:42:58 | 显示全部楼层
用VBA的话,
简单的可以用instr 找到 套的位置,再用 instr 或 InStrRev  加开始位置 取前后空格的位置

用函数公式的话,等小妖或R大师回复了
发表于 2017-3-11 01:35:07 | 显示全部楼层
如果是一个“套”,公式还是可以的。多个“套”的时候,因为没法find到最后一个套附近的空格位置,只能VBA。代码供参考。附件中已经创建了自定义函数。请启用宏后运行。
  1. Function getTao(ByVal rng As Range) As String
  2.     Dim lngStart As Long, lngEnd As Long
  3.     Dim strGet As String
  4.     Dim lngFirst As Long, lngLast As Long
  5.    
  6.     '第一个套和最后一个套的位置
  7.     lngFirst = InStr(1, rng, "套")
  8.     lngLast = InStrRev(rng, "套")
  9.     '如果没找到,返回空值
  10.     If lngFirst = 0 Then
  11.         strGet = ""
  12.     Else
  13.     '开始位置和最后位置。
  14.         lngStart = InStrRev(Left(rng, lngFirst), " ") + 1
  15.         lngEnd = InStr(1, Mid(rng, lngLast), " ") - 1 + lngLast
  16.     '返回字符串
  17.         strGet = Mid(rng, lngStart, lngEnd - lngStart)
  18.     End If
  19.     getTao = strGet
  20. End Function
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2017-3-30 09:39:34 | 显示全部楼层
由于存在字母间的空格,因而可以分2步走。
第1步,复制到word,查找替换如图:

查找:([a-z,A-Z]) ([a-z,A-Z])
替换为:\1※\2
把字母间的空格替换为※

第2步,从word再贴回到Excel,输入公式,用函数分列+VLOOKUP单列模糊查找
  1. =SUBSTITUTE(VLOOKUP("*套*",TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",99)),99*{0;1;2;3;4}+1,99)),1,0),"※"," ")
复制代码



【函数分列】+【Vlookup单列查找】的案例,可参考疑难千寻千解丛书《Excel 2013函数与公式》疑难136        如何将一个单元格内多个“字段”与内容进行分离

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2019-2-27 14:45:21 | 显示全部楼层
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 13:13 , Processed in 0.104055 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表