fastreport 合并重复行_超厉害的Excel合并技巧,瞬间有种“鹤立鸡群”的感觉

超厉害的Excel合并技巧,瞬间有种“鹤立鸡群”的感觉

大家好,很高兴又见面了!好好学习,天天向上!每天的工作是枯燥的,每天的学习也是无味的,如何才能让工作变的更加轻松呢?个人觉得,掌握技巧才是关键。不论是工作、生活、办公及软件等等都是需要技巧的,只有掌握了合理的操作技巧,才能使自己更加的突出。今天,我想继续和大家分享几个超厉害的Excel合并技巧,让你瞬间有种“鹤立鸡群”的感觉!怎么样,赶紧看下来吧!

提到Excel的合并,可能很多人说,我都知道很多的技巧,还有什么好的方法呢?话不多少,你就看吧!

d2a3986c3fca5e6d71b06145990df382.png

如上图实例,在A列中是家庭中的户主姓名,B列中是对应的该户其他相关亲属姓名。现在想要实现的目标是将AB列表格内容转换为如图DE列所示的样式,也就是将一户所有人合并为一行, D列是户主,E列是所有其他亲属的人名。

你有什么好的办法没有?可能每个人的理解不同,想出来的方法也不同,这里不做谈论。下面向大家介绍的这种快捷方便的方法,希望对你有所帮助。

一、每人加一个代号

通过实例分析,A列中的户主名称几个都是重复的,可以利用删除重复值保留一个即可。B列中的几个不同的姓名可以采用“加辅助”的方法加以处理。

首先,我们先给b列中的姓名每人加一个代号,具体的操作方法如下:

在 C2单元格中输入“A张子美”,也就是在b2单元格的基础上加上字母A,再选中所有需要填充变化的单元格,然后按快捷键Ctrl + E即可实现如下图中所有姓名前批量添加字母A的结果。

1e8af991bc67369e9c9aab9c532fd2ff.png
二、户户之间插入空行

根据实例需要,我们要将每户的人之间用一个空行进行分割,方便后期的使用。具体插入空行的方法如下:

1、首先移动鼠标到B列标题位置,点击鼠标右键选择插入,即可在AB列之间插入一列,然后选中A列中的所有单元格内容,移动鼠标到选中单元格区域的边框位置,待鼠标变成四角样式时,按住Ctrl拖动复制所选内容并向下错开一行,如下图的样式。

02298f957afdfb37f226f30c5f802ea9.png

2、接着,从第三行开始选中AB列所有内容,然后按快捷键Ctrl + ,然后就发现所有重复姓名的第一个名称已经被选中。这里简单说下Ctrl + 的作用,其实就是AB两列之间比对找出不同值;为什么要错行比对呢?知道原因了吧!如下图所示。

023311b6a91b1bfa35cf3535c2693da1.png

3、保持上述状态,右键选中插入命令,在弹出对话框中选择插入行即可。

36d5ddfa7654a4e09f09bcb6642540f6.png

三、内容重拍合并

在DE列中间拖动鼠标使D列的列宽变大,如下图样式。然后依次选择编辑-填充-内容重排命令即可将空行以内的几项内容进行合并。

20d9d9e8a4eabc23a01f829398ed9196.png

通过内容重排后,已经初步到达了我们最终的目标。具体样式见下图。

951907f3bdf28e62b987eee2648fd29b.png

四、删除重复值

选择A列户主整列,然后依次选中数据标签下的删除重复值命令,在弹出的对话框中点击确定即可将所有重复的姓名只保留一个。如下图所示。

3bfdb373b56d7942797985738c68ecfb.png

五、删除空行

通过上述第三步操作,我们基本上已经实现了文字的效果,但是D列单元格中还有很多的空行需要处理,这里采用定位空值并删除的方法。具体操作如下:

首先选中D列中的有效单元格,然后按快捷键Ctrl+G定位,选择定位条件为空值,这样所有的空值单元格就被选中了,接着我们鼠标右键选择删除整行单元格即可实现结果。

fb24dd6b4110255f8036c676f70f54de.png

六、替换掉第一步的代码

如下图的结果,在B 列中的单元格中,每个人的名字前面都有一个添加的字母代码。现在我们要做的就是去掉这个字母最终实现如C列的效果。这里采用快捷键填充的方法来实现。具体操作如下:

在C2单元格中手动输入替换后的样式,如下图所示。然后全部选中需要填充的单元格区域,然后按快捷键Ctrl+E即可将所有的单元格完成填充。最终实现如下图的效果。

9d52d7ba55206a5adf0edd5d2af134b2.png

这里需要说明的一点就是,有些小伙伴会说,怎么不使用查找和替换方法,也可以将字母A批量去掉呀。是的,虽然这种方法也可以实现,但是它却不能实现姓名之间添加逗号的结果,所以使用Ctrl+E更完美解决问题。

七、总结

通过以上的步骤,我们就实现了另类合并的目标。建议,还不会的小伙伴们一定要手动去实验操作几遍,融会贯通,更深入的去理解。该方法对于这一类的处理方法还是很有效的,如果下次你遇到类似的难题,还在手动拖动、复制粘贴就OUT了。

好了,今天的分享就到这里,如果您还有更好的方法和技巧欢迎文后留言赐教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
:首先是要分组,因为如果不分组,想合并的列与其它列会自动打印。这样,只能使用FR自带的隐藏重复数据的功能,但很多类似报表都是要求合并居中的,这点FR就不能自动实现了。 2:要全并的列放在分组脚中,其它放在分组数据BAND中,这样,打印完分组数据BAND后,动态改变分组脚中要合并列的TOP和HEIGHT就可以了。而且这样打印,因为要合并实际上只打印了一遍,因此应该效率更高。所以这就需要在打印分组数据BAND后有一个可记录此分组已打印高度的功能。 3:代码解释 procedure MCOnAfterData(Sender: TfrxComponent); begin if =1 then MC.Tag:=Int(MC.Height) else MC.Tag:=MC.Tag+Int(MC.Height); end; 因为FR的在每次分组后重新计数,使用MC.Tag保存现在数据BAND上的所有不合并的总高度。当然也可以使用一个变量,但放着这么多TAG不用,多浪费呀。况且使用TAG的语法也比使用变量简单,使用变量使程序看上去很难懂。 if >=1 then 这样的写法看起来多痛苦呀。 procedure MBBOnAfterData(Sender: TfrxComponent); begin MBB.Tag:=GetStandHeight(MBB.CalcHeight); //这一句是为了保持行高的一致性,如果不需要直接 MBB.Tag:=MBB.CalcHeight; //这样可能计算的行高不是标准行高的整数倍。 MBB.Visible:=False; end; procedure MD1OnBeforePrint(Sender: TfrxComponent); begin if =1 then MBB.Visible:=True; end; 上二句只是为了不多次统计CalcHeight,但不能直接设可视性为假,否则不会触发MBBOnAfterData事件。 计算此例中可能会很高的列的计算高度,这是在宽度已经确定的情况下计算的。 因为此例中的第二列单行高度可能大于其它列的总高度。如果没有此例中的特殊情况,可以省略。 4:如果此例中没有第二列单行高度可能大于其它列的总高度的话,MBB是不需要的。 5:如果不是要求空为多多列显示的话,GFOnBeforePrint也是不需要的,只需要在GF上放二个MEMOVIEW,宽高和左边距分别与上方的二个相同,调用我例子中注释掉的代码改变它们的TOP和HEIGHT即可。 6:TAG是所有Tcomponent的属性呀,这是我最常使用的一个属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值