ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > 【公式解析系列】之合并同类项文本

【公式解析系列】之合并同类项文本

作者:绿色风 分类: 时间:2022-08-17 浏览:163
楼主
gouweicao78
【题目】有A、B二列数据,怎样在A列数据相同时将B列数据合并到一单元格?并且当B列上首个单元格的字符不满8个字节时以空格填满8个字节,然后写下几个单元格的字符。
【示例】

 

如图:因为A2的代码唯一,所以B2值为预亏,因为不满8个字节,填充4个空格。   
因为A3、A4、A5代码一样,所以要将B3、B4、B5合并到B3单元格,因为B3值为H股,不满8个字节,填充5个空格后再合并。

【解法】
C2单元格输入普通公式
  1. =LEFTB(B2&REPT(" ",8*(COUNTIF(A$2:A2,A2)=1)),8)&IF(COUNTIF(A3:A10,A2),VLOOKUP(A2,A3:C10,3,0),"")


【解析】
1、LEFTB作何用?因为题目要求“首个记录不满足8字节”的要补足空格。LEFTB可以将汉字作为双字节对待。
2、B2&REPT(" ",8*(COUNTIF(A$2:A2,A2)=1))——当A2是首次出现时,REPT生效,在B2后面加上8个空格,非首次出现这Rept了0个空格。
结合1、2点,满足题目要求的“首个记录不足8字节用空格补足”。

3、IF(COUNTIF(A3:A10,A2)——注意:公式是在C2单元格,而COUNTIF第1参数用的是A3:A10,也就是看看“下面还有没有A2一样的股票代码”,如果有,进入VLOOKUP查找。

4、VLOOKUP(A2,A3:C10,3,0)——注意①在A3:C10中查找A2;②返回第3列,也就是C列的值。③第4参数为0,精确查找,也就是查找“第一个”记录。
综合起来,就是在“下面找与A2代码一样的对应的C列的值”,下面的C列的值也是公式计算出来的,相当于“预支”了下一步公式的结果,有点让人费解,不过先从下面输入公式再倒过来向上复制的话,意思就容易明白了。呵呵,“逆向思维”很重要。

结合3、4点,也就是下面还有与当前相同的,就把下面的文本合并到当前文本后面,否则就把“空文本”合并到当前文本后面——也就是尾巴不加东西了。

5、由1~4步的解析,把公式向下复制后,得到如下效果:

 

那么,怎样才能去掉不是首次出现的股票代码对应的合并文本呢?
从公式看,单元格在上面的公式要依赖于单元格在下面的公式得到的结果,因此做成""空文本显然达不到效果,是否还需要辅助列呢?

不用,条件格式帮你忙!除了""合并,还可以利用条件格式将字体颜色设置与单元格底色一致(比如白色),以便达到“看不到”这些多余记录的效果。
Excel 2007版、2010版新增功能,在条件格式设置中,可以设置单元格自定义数字格式,将其设置为3个分号;;;表示正数、负数、零和文本都不显示,这一招隐藏就让多余的记录更“深藏不露”了。
如图:

 

【附件】
合并同类项(公式+条件格式).rar
2楼
gouweicao78
“逆向”阅读,从下而上看:


 
3楼
wangqilong1980
逝者如斯夫 不舍昼夜。
4楼
lrlxxqxa
“逆向思维”很重要!
5楼
LOGO
学习了,谢谢分享.
6楼
houtian23
逆向思维
太厉害了
不知道几时才能达到草版的境界啊
7楼
好大一棵树王玉
这种方法头一次接触,学习了谢谢版主!
8楼
心痛神伤
思维跟不上啊
9楼
fanglilian
已学习
10楼
cc100
思维跟不上啊
11楼
墨香雪
这种方法头一次接触,学习了谢谢版主
12楼
icenotcool


免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap