ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

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

[分享] 关于合并符合条件的文本问题Contxt

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-15 09:20 | 显示全部楼层 |阅读模式
最近几天在论坛上看到不少要用函数公式合并符合条件或者处理符合条件的文本问题的帖子,这种问题最好还是用VBA自定义函数方法解决,论坛上已有很成熟、好用的CONTXT函数。

附件中举了三个典型的例子,其中第三个是最经常碰到的,供大家参考,以后再碰到此类问题,我就把这个链接发给提问者,其实简单修改下参数的引用范围就能解决不少问题。

用法解释:
1)CONTXT函数可以连接单元格文本(如果是矩形区域,按先行后列的方式顺序合并),或者连接公式返回的内存数组。
2)这个用法的核心是=CONTXT(IF(条件判断区域=条件,要合并的数据,""))这样,IF函数返回的是:符合条件的数据对应的要合并数据留下,不符合条件的数据成空。
比如说要讲“张三”对应的职业合并起来:
姓名       职业
张三       学生
李四       教师
张三       军人

IF函数判断后,返回“职业”栏的数据数组为:{"学生","","军人"},也就是张三对应的职业留下,不是张三的返回空。

然后CONTXT函数将符合条件的要被合并的数据和不符合条件对应的空合并起来,这样就返回:“学生军人”。

由于普通合并中间没有分隔符不好看,所以把公式改成:
=CONTXT(IF(条件判断区域=条件,"、"&要合并的数据,""))
IF部分返回:{"、学生","","、军人"},,合并后返回:“、学生、军人”
然后用MID函数从第二个字符开始取99个字符就是:=MID(“、学生、军人”,2,99)=“学生、军人”

以上,供各位使用者参考,实在读不懂再追问。

打开文件时注意启用宏!
EM截图_20155159854.png

文本合并.rar

16.31 KB, 下载次数: 1187

评分

参与人数 5鲜花 +10 收起 理由
461141060 + 1
MICROPOINT + 2 值得肯定
sayhi95 + 2 太强大了
jians0529 + 3 值得肯定
wswfzwswfz + 2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-5-15 09:32 | 显示全部楼层
多个数据并一个单元格里是一个恶习,会给后续运算和分析带来很大麻烦
但还就这么多人爱这么来

评分

参与人数 1鲜花 +2 收起 理由
yeminqiang + 2 呵呵,顶个

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-5-15 10:30 | 显示全部楼层
这个函数很好用。 论坛上CONTXT似乎有2个版本,这个比较好用,另一个好像带了些其他内容。
不过附件例题1引用的是版主本地文件
  1. C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns\Clark''s Tools.xlam'!contxt(
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-15 10:33 | 显示全部楼层
首席打杂 发表于 2015-5-15 10:30
这个函数很好用。 论坛上CONTXT似乎有2个版本,这个比较好用,另一个好像带了些其他内容。
不过附件例题1引 ...

对,我也见过另外一个,但是这个更灵活好用。
我自己做了个工具条,也装载了这个函数,附件中也有,应该不太影响,呵呵。

TA的精华主题

TA的得分主题

发表于 2015-8-13 09:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-8-13 11:32 | 显示全部楼层
伊琳2013 发表于 2015-8-13 09:31
还有数字求和合并,怎么做?

你得给出具体的数据和文件,才能看这个函数是不是能解决。

TA的精华主题

TA的得分主题

发表于 2015-8-13 11:53 | 显示全部楼层
最近用contxt配合index+N(if(1,small+if答了不少题,非常好用的一个自定义函数{:soso_e142:}{:soso_e163:}

TA的精华主题

TA的得分主题

发表于 2015-8-13 14:29 | 显示全部楼层
shaowu459 发表于 2015-8-13 11:32
你得给出具体的数据和文件,才能看这个函数是不是能解决。

想把多个项目合并成一行以客户名称作为唯一分类依据的表格

客户招标情况表.rar

27.54 KB, 下载次数: 152

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-8-13 16:29 | 显示全部楼层
伊琳2013 发表于 2015-8-13 14:29
想把多个项目合并成一行以客户名称作为唯一分类依据的表格

干嘛要合并,我感觉基础表这样每一个项目一行,非常好啊。

TA的精华主题

TA的得分主题

发表于 2015-8-14 10:21 | 显示全部楼层
shaowu459 发表于 2015-8-13 16:29
干嘛要合并,我感觉基础表这样每一个项目一行,非常好啊。

领导要求的呗  一行一个客户
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

GMT+8, 2020-5-28 16:28 , Processed in 1.098955 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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