ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 EH云课堂直播课程免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 6429|回复: 9

[原创] 【辅助列解决实际问题_系列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, 下载次数: 901)

评分

参与人数 4鲜花 +9 收起 理由
apirl2008 + 3
13732120571 + 2 实用的学习下,支持下,小花表示
jacky1998 + 2 优秀作品,没办法,只能赞助花,聊表心意。
hsw212 + 2 优秀作品

查看全部评分

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 | 显示全部楼层

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2014-8-24 16:06 | 显示全部楼层
支持!          “做”  比 “ 坐” 要好   

TA的精华主题

TA的得分主题

发表于 2014-10-14 13:28 | 显示全部楼层
学习了。
=LOOKUP("做做做",D4:AN4)改用=LOOKUP("々",D4:AN4)是不是更好些?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 13:59 | 显示全部楼层
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 | 显示全部楼层
翟大神,我是鸣人,听了你的课,再去看这个,刚开始眼花,但是慢慢一个公式一个公式的去理解,再体会其中的思路,最终我也懂了!!!好神奇,不过,我还是更偏爱你的自定义函数,哇哈哈哈哈!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-10-23 04:10 , Processed in 0.078465 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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