ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7404|回复: 39

[Excel 函数与公式] 【67期】员工调动统计

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-10-14 21:27 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
根据8月份、7月份人事库资料,在EXCEL 2003操作环境下,用公式完成员工调动统计表。员工调动包含从外单位(或社会上)调入本单位、本单位调出、本单位内部部门之间的调动、工种之间的调动、职务之间的调动。

这是一道很不错的题目,经过楼主同意,现在进行了修改。可能会有一些不妥之处,请大家及时提出意见,本人出去旅游5天,26号回答各种意见问题。

答题截止在11月22日,为了方面大家互相学习和快速理解,请答题者把答题思路也一起写上。

[ 本帖最后由 冻豆腐 于 2010-11-23 07:44 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-21 14:32 | 显示全部楼层
公式最后的"A4:A28"若不允许引用,就改为:row(1:25)
=INDEX(T(OFFSET(题目!A2,ROW(1:187)*{1,1,1,1,0,0}+MATCH(题目!H3:H189&0,题目!C3:C189&0,)*{0,0,0,0,1,1},{7,8,5,6,0,1})),SMALL(IF(MMULT(N(T(OFFSET(题目!A2,MATCH(题目!H3:H188,题目!C:C,)-2,{0,1}))=题目!F3:G188),{1;1})-2,ROW(1:186),187),A4:A28))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-22 08:51 | 显示全部楼层

太难了,整个投机的

参与一下,占个好楼层先!

=OFFSET(题目!A$2,MID(SMALL(IF(ISNA(MATCH(题目!A$3:A188&题目!B$3:B188&题目!C$3:C188,题目!F$3:F188&题目!G$3:G188&题目!H$3:H188,0)),ROW($1:$186)*1%%+MATCH(题目!C$3:C188,题目!H$3:H188,0),2009999),A4),{5,5,1,1,5,5},{9,9,3,3,9,9}),{2,3,5,6,0,1})&""

[ 本帖最后由 leeyong 于 2010-11-21 17:25 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-22 10:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=LOOKUP(1,0/(INDEX(题目!C:C,SMALL(IF(MMULT(--(题目!A3:A188&题目!B3:B188&题目!C3:C188=TRANSPOSE(题目!F3:F188&题目!G3:G188&题目!H3:H188)),ROW(3:188)^0),4^8,ROW(3:188)),ROW()-3))=IF(COLUMN()={3,4},题目!H:H,题目!C:C)),OFFSET(题目!A:A,,{2,3,5,6,0,1}))&""

不带等号228字符- -。。。。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-23 21:24 | 显示全部楼层
=OFFSET(题目!A2,MOD(SMALL(IF(MMULT(COUNTIF(OFFSET(题目!F2,MATCH(题目!C3:C188,题目!H3:H188,),,1,3),题目!A3:C188),{1;1;1})=3,2.2^8,MATCH(题目!C3:C188,题目!H3:H188,)+ROW(1:186)%%),ROW(1:25))*IF(COLUMN()>5,10^4,1),10^4),{7,8,5,6,0,1})&""
217字符
MMULT(COUNTIF(OFFSET(题目!F2,MATCH(题目!C3:C188,题目!H3:H188,),,1,3),题目!A3:C188),{1;1;1})=3 判断是否变化
MATCH(题目!C3:C188,题目!H3:H188,)+ROW(1:186)%%) 得到变化员工的原来行号(整数)、现在的行号(小数)
small(......,row(1:25) 排序,通过mod(..)取得行号。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-24 15:47 | 显示全部楼层

参与一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-26 13:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=INDIRECT("题目!"&{"H","I","F","G","A","B"}&MID(SMALL(IF(ISNA(MATCH(题目!F3:F188&题目!G3:G188&题目!H3:H188,题目!A3:A188&题目!B3:B188&题目!C3:C188,)),MATCH(题目!H3:H188,题目!C3:C188,)+ROW(3:188)*1000,8^8),ROW(1:25))+10^7,3*((COLUMN()>5)+1),3))&""

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-27 17:21 | 显示全部楼层
只有学习的份了。

[ 本帖最后由 草民1982111 于 2010-11-2 14:21 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

TA的精华主题

TA的得分主题

发表于 2010-10-28 11:31 | 显示全部楼层
公式写的比较乱,321字,有时间在修改...
=INDEX(题目!A3:I999,{0,0,1,1,0,0}*SMALL(IF(ISERROR(MATCH(题目!A3:A188&题目!B3:B188&题目!C3:C188,题目!F3:F188&题目!G3:G188&题目!H3:H188,)),MATCH(题目!C3:C188,题目!H3:H188,),888),ROW(1:26))+SMALL(IF(ISERROR(MATCH(题目!A3:A188&题目!B3:B188&题目!C3:C188,题目!F3:F188&题目!G3:G188&题目!H3:H188,)),ROW(1:186),888),ROW(1:26))*{1,1,0,0,1,1},{3,4,6,7,1,2})&""


呵呵 看错了题目,以为题目要求330字 其实是230字....题目没有说不能用补助列,呵呵漏洞哦,用不住列可以做到144字符,运行速度也快.....
已经提交了,不得不继续努力简化到242字符,还多12个字符,
=INDEX(题目!A3:I999,MID(TEXT(SMALL(--(TEXT(ISERROR(MATCH(题目!A3:A188&题目!B3:B188&题目!C3:C188,题目!F3:F188&题目!G3:G188&题目!H3:H188,))*MATCH(题目!C3:C188,题目!H3:H188,),"[=0]444444;"&ROW(1:186)&"000")),ROW(1:25)),"000000"),{1,1,4,4,1,1},3),{3,4,6,7,1,2})&""

再次精简到228字符,刚达到要求.......题目!A:I 都用上了,够狠吧.....
=INDEX(题目!A:I,MID(LARGE(-TEXT(ISERROR(MATCH(题目!A3:A188&题目!B3:B188&题目!C3:C188,题目!F3:F188&题目!G3:G188&题目!H3:H188,))*MATCH(题目!C3:C188,题目!H3:H188,),"[=0]2222222;"&1000+ROW(1:186)&"000"),ROW(1:26)),{3,3,6,6,3,3},3)+2,{3,4,6,7,1,2})&""

[ 本帖最后由 jxrbz 于 2010-11-11 13:19 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-11-1 13:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
参与一下。
    将F、G、H列和A、B、C列分别连起来进行比对,即在8月份的人事档案中查找7月份的人事档案,找不到则说明人员进行了调动,找到了则没有变动。
    既然找不到的人就是发生了调动的人,我就对找不到的进行操作:
1、记录其所在行的位置即ROW(3:188);
2、由于7月份、8月份的认识档案的位置有些不同,可使用公式MATCH(题目!H3:H188,题目!C:C,)提取7月份表格人员对应8月份的位置,
3、将两个数据相加,即:ROW(3:188)*10^4+MATCH(题目!H3:H188,题目!C:C,),这一公式既保存了7月份表格的变动人员所在位置,也保存了8月份表格的人员所在位置;
4、没有变动的人员,设定为一个较大的数值8^8,进行排序并取其最小的25个数值(因为只显示到B4:g28,只要求显示25个)
5、B4:G25输出的信息,B、C、D、E四列都是7月份表格的位置,而F、G列则为8月份的表格的位置,因此要对公式 ROW(3:188)*10^4+MATCH(题目!H3:H188,题目!C:C,)生成的数字进行拆分,这个公式后4位是8月份的人员位置,前几位是7月份的,但数字长度并不固定,为了固定其长度便于操作,将其加上一个较大的数字10^8,这样就轻易的取到7月份和8月份的人员位置信息,最后使用 index进行多单元展示即可
==========================================

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 21:16 , Processed in 0.053025 second(s), 23 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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