如何通过excel公式查找一列数据中的相同项目?
2016-02-18 16:18
519 查看
公司内部某个部门要进行员工的工作效率的记录,但是要求通过EXCEL进行录入,最后算出综合效率,显示到另外一个表中。
条件:
1、手动录入日期、工号、品番、工时、数量。员工姓名:通过VLOOKUP找工号获得。
2、单个效率=数量/目标数。目标数:通过Vlookup找品番获得。
3、员工当天可能会有多个品番进行操作,会有多条记录,综合效率的公式=(效率A*A工时+效率B*B工时+...)/(A工时+B工时+...)
![](https://img-blog.csdn.net/20160218151539597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其他操作都是非常基础的操作,通过VLOOKUP等可以获取。
但是在多条记录中查找有相同特点的数据不太好实现。
只能考虑数组公式。
![](https://img-blog.csdn.net/20160218153051288?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
首先设定两组辅助公式:
都为=B3&E3 ,也就是日期+工号
最小效率公式:
=IF(K3=0,0,INDEX(INDIRECT(SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,11))
最小工时公式:
=IF(K3=0,0,INDEX(INDIRECT(SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,8))
最大效率公式:
=IF(K3=0,0,INDEX(INDIRECT(LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,11))
最大工时公式:
=IF(K3=0,0,INDEX(INDIRECT(LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,8))
由于一般情况下,单个员工一天最多操作两个品番,所以公式取一个最大值,一个最小值。如果有超过两个值的情况,请将SMALL公式的第二个参数改为1,2,3,...即可。
上面的4组为数组公式,记得录入完成后按:CTRL+SHIFT+回车
综合效率公式:
=IF(OR(N3="请假",P3="请假"),"请假",IF(N3="",P3,IF(P3="",N3,((N3*O3)+(P3*Q3))/(O3+Q3))))
将所有公式复制到下面的行即可。
条件:
1、手动录入日期、工号、品番、工时、数量。员工姓名:通过VLOOKUP找工号获得。
2、单个效率=数量/目标数。目标数:通过Vlookup找品番获得。
3、员工当天可能会有多个品番进行操作,会有多条记录,综合效率的公式=(效率A*A工时+效率B*B工时+...)/(A工时+B工时+...)
其他操作都是非常基础的操作,通过VLOOKUP等可以获取。
但是在多条记录中查找有相同特点的数据不太好实现。
只能考虑数组公式。
首先设定两组辅助公式:
都为=B3&E3 ,也就是日期+工号
最小效率公式:
=IF(K3=0,0,INDEX(INDIRECT(SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,11))
最小工时公式:
=IF(K3=0,0,INDEX(INDIRECT(SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&SMALL(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,8))
最大效率公式:
=IF(K3=0,0,INDEX(INDIRECT(LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,11))
最大工时公式:
=IF(K3=0,0,INDEX(INDIRECT(LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1)&":"&LARGE(IF($L$3:$L$65536=M3,ROW($3:$65536)),1),TRUE),0,8))
由于一般情况下,单个员工一天最多操作两个品番,所以公式取一个最大值,一个最小值。如果有超过两个值的情况,请将SMALL公式的第二个参数改为1,2,3,...即可。
上面的4组为数组公式,记得录入完成后按:CTRL+SHIFT+回车
综合效率公式:
=IF(OR(N3="请假",P3="请假"),"请假",IF(N3="",P3,IF(P3="",N3,((N3*O3)+(P3*Q3))/(O3+Q3))))
将所有公式复制到下面的行即可。
相关文章推荐
- 使用Python生成Excel格式的图片
- Excel 曝出 Power Query 安全漏洞,1.2 亿用户易受远程 DDE 攻击
- VBA将excel数据表生成JSON文件
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- Redis中实现查找某个值的范围
- SQL 导入导出Excel数据的语句
- 批量文件查找替换功能的vbs脚本
- 文本、Excel、Access数据导入SQL Server2000的方法
- C#导出数据到Excel文件的方法
- WinForm实现按名称递归查找控件的方法
- Vbscript生成Excel报表的常用操作总结
- 一个用vbs查找硬盘所有分区中的指定程序的代码
- C#实现导入CSV文件到Excel工作簿的方法
- C#基于NPOI生成具有精确列宽行高的Excel文件的方法
- 浅析Node.js查找字符串功能
- 总提示[Microsoft][ODBC Excel Driver] 数值字段溢出官方解决方法
- C#将Sql数据保存到Excel文件中的方法
- C++二分法在数组中查找关键字的方法
- C++中字符串查找操作的两则实例分享