excel横列数据合并怎么处理?
你好,这是一个典型的将数据库记录转换成二维交叉表格的问题,通过Excel,处理如下:
前题是每个人每日对应的金额只限一次,如果出现二次,则在须再加一个序号列。
1、为了防止两人姓名相同,则建议加一列“工号”,其值自定义就行,再加一列“查询号"(数据转换完后也可删除,其值为 A2=B2&C2&D2 下拉,如图,
2、取唯一行值与列值,复制工号、姓名两列,然后粘贴到另一处,数据---删除重复项,得到右边唯一行值,用相同办法,复制日期列,然后手复制、删除重复得到唯一的列值;
3、将新得到的日期列值,复制---选择性粘贴----转置,将工号与姓名一同复制,得到二维交叉表(这样设计就把数据范围包括完全了),注,日期复制粘贴后,日期格式会变成一串数字,选择范围,右键、设置单元格格式---日期 (*2001-3-4):
4、定义公式取值,K2=IFERROR(VLOOKUP($I2&$J2&$K$1,$A:$E,5,0),0), 先横拉,然后锁定公式中的范围值(加 $),再竖拉。没有值的我用0代替了,便于求和运算。
说明: 本人从事数据库管理工作,这种方法对海量数据存取很效。希望对你有用,有疑问再交流。
这个如果只是计算金额,那倒是直接用sumifs即可,公式也简单,但是要实现自动删选,还是推荐两种方法,一种是数据透视表,如下:
另一种是函数法,首先要获取姓名、日期的不重复值,不重复值可以使用数组公式法获取,也可以使用“数据”菜单下的“删除重复值”得到,删除重复值演示如下:
表中求和用函数即为sumifs,这个没什么可说的,使用时注意单元格引用方式。
公式:
F3=SUMIFS($B$3:$B$13,$A$3:$A$13,$E3,$C$3:$C$13,F$2)
向右、向下拉公式。
获取姓名和日期不重复值函数参考:
E3=IFERROR(INDEX($A$3:$A$13,SMALL(IF(MATCH($A$3:$A$13,$A$3:$A$13,0)=ROW($A$1:$A$11),ROW($A$1:$A$11),4^6),ROW(A1))),"")
F2=IFERROR(INDEX($C$3:$C$13,SMALL(IF(MATCH($C$3:$C$13,$C$3:$C$13,0)=ROW($A$1:$A$11),ROW($A$1:$A$11),4^6),COLUMN(A1))),"")
以上两个为数据公式,单元格中输入后,需要Ctrl+Shift+Enter三键齐按结束,Excel会自动生成{}。
=SUMIFS($B:$B,$A:$A,$E3,$C:$C,F$2)
复制并下拉和右拉至L4单元格,即可。
2、若你是要地址的中文名称之类的提取,则可以在F3单元格输入公式:
=IFERROR(LOOKUP(1,0/(($A$3:$A$13=$E3)*($C$3:$C$13=F$2)),$B$3:$B$13),"")
复制并下拉和右拉,即可。