ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10002|回复: 10

[原创] 【辅助列解决实际问题_系列1】利用多单元格仿迭代进行字符串提取

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-8-24 13:52 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:SUBSTITUTE
本帖最后由 cleverzhzhf 于 2014-8-24 14:12 编辑

提取单元格中的字符串,是一个永恒的话题,都有怎样的解决方案呢?
一、一个公式
高手们在根据各种数据特性、函数特性,来追求一个公式解决战斗
不得不说,真的看得人热血沸腾,真心精彩。
但是对于初学的人,以及实际工作中需要应用的人,又是如此难以掌握。
二、VBA
VBA几乎可以说是万能的,如果你会VBA,恰好还懂得正则的时候,哇,使用自定义函数那就没有问题了!
可真的没问题了吗?如果你帮MM做的这个工具,MM可能闪着大眼睛问你,代码贴在哪?我的电脑里看不到“模块”呀?怎么启用宏呀?
三、WORD
这是一个偏门,但是不得不说WORD的查找替换时真心强大!
可是,WORD的弱势是你每次都要做一遍。无法实现自动化。
四、迭代计算
这其实是一个强大但是难于实际运用的工具。每次还要设置启用迭代,估计帮别人讲懂迭代还不如讲懂VBA来的容易

本文采用的方法,就是在仿迭代:
Excel2007以上版本,一共有16384列,打着滚的用,估计你都用不完。所以在自己设计的表格靠右一些的部分,有效运用辅助列,然后把这些列隐藏就完事大吉了。


利用多单元格仿迭代进行字符串提取.rar (17.38 KB, 下载次数: 1222)
利用多单元格仿迭代进行字符串提取1.png
利用多单元格仿迭代进行字符串提取2.png
利用多单元格仿迭代进行字符串提取3.png

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-24 14:06 | 显示全部楼层
本帖最后由 cleverzhzhf 于 2014-8-24 14:07 编辑

仅挑选其中的一个公式来解读:
E4的公式为:
  1. =IF(AND(MID($D4,COLUMN(A:A),1)>="阿",MID($D4,COLUMN(A:A),1)<="做"),SUBSTITUTE(D4,MID($D4,COLUMN(A:A),1),),D4)
复制代码
然后向右一直拖动到任意格,本文随机拖动到AN4。

一、MID($D4,COLUMN(A:A),1)
务必注意,这里是固定$D4格,因为要逐一判断原字符串的每一个字符。
用Column(A:A),这样可以实现拖动后,依次生成1、2、3、……的一串数字

二、AND(MID($D4,COLUMN(A:A),1)>="阿",MID($D4,COLUMN(A:A),1)<="做")
文字也是可以比较大小的,“阿”和“做”几乎是汉字中的第一个和最后一个汉字(见新华字典),也可以参考其他帖子使用“吖”和“々”。
这里是为了确定,所提取的字符是否为汉字。

三、SUBSTITUTE(D4,MID($D4,COLUMN(A:A),1),)
这里就是逐一的替换,把原来字符串中的相应的字符,替换为空。注意,Substitute的第一个参数D4,是不固定的,迭代的思想就在这里。

四、IF(AND条件,SUBSTITUTE(D4,MID($D4,COLUMN(A:A),1),),D4)
这里来通过判断逻辑,是把当前单元格左侧的那一个替换为空,还是原封不动的引用左侧那一个单元格。

五、将公式一直向右拖动
这样就形成了“迭代”的最终效果。

TA的精华主题

TA的得分主题

发表于 2014-8-24 14:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-8-24 14:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
生命无休,学习不止

TA的精华主题

TA的得分主题

发表于 2014-8-24 14:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jacky1998风险投资强力注资。

TA的精华主题

TA的得分主题

发表于 2014-8-24 16:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-10-14 13:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习了。
=LOOKUP("做做做",D4:AN4)改用=LOOKUP("々",D4:AN4)是不是更好些?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 13:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wangjguo44 发表于 2014-10-14 13:28
学习了。
=LOOKUP("做做做",D4:AN4)改用=LOOKUP("々",D4:AN4)是不是更好些?

感谢提醒~~考虑过“々”,不过从书写上并不是特别方便,Alt+小键盘41385,大部分人应该记不住。
所以找一个相对比较大的值“做做做”,这样也比较好理解。如果还能有比这个字符大的,那也算比较奇葩了~~那我就换成rept("做",99)~~呵呵

点评

不用记住小键盘吧?多种输入法的 软键盘/标点符号 里有。  发表于 2014-10-14 14:49

TA的精华主题

TA的得分主题

发表于 2015-11-20 15:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-11-25 12:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
翟大神,我是鸣人,听了你的课,再去看这个,刚开始眼花,但是慢慢一个公式一个公式的去理解,再体会其中的思路,最终我也懂了!!!好神奇,不过,我还是更偏爱你的自定义函数,哇哈哈哈哈!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 18:17 , Processed in 0.045063 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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