ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 【一个非常有技巧的甲乙丙丁问题】

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-10-3 01:14 | 显示全部楼层 |阅读模式
【一个非常有技巧的甲乙丙丁问题】
甲乙丙丁1.jpg
QQ截图未命名.jpg
retr.jpg
甲乙丙丁2.jpg
有n个选择题,每道题只有A、B、C三个选项,有四个班级:甲乙丙丁;选A的只有甲乙两个班,选B的只有甲乙丙三个班,选C的只有甲乙丙丁四个班。一张EXCEL表中有四个sheet:DATA、A、B、C,DATA表为数据记录,每日更新在后面添加,A、B、C表为对应班级选的题目序号,现在的问题是每次在DATA表更新数据后,A、B、C表自动更新,不用手动输入,很费时。希望我把问题已经讲明白了。期待高手解决,方法越简单越好。急。
如何将附件中的甲乙丙丁1文件在添加记录时自动更新为甲乙丙丁2
甲乙丙丁.rar (3.32 KB, 下载次数: 25)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-3 01:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

【一个非常有技巧的甲乙丙丁问题】

甲乙丙丁1.jpg
QQ截图未命名.jpg
retr.jpg
甲乙丙丁2.jpg
有n个选择题,每道题只有A、B、C三个选项,有四个班级:甲乙丙丁;选A的只有甲乙两个班,选B的只有甲乙丙三个班,选C的只有甲乙丙丁四个班。一张EXCEL表中有四个sheet:DATA、A、B、C,DATA表为数据记录,每日更新在后面添加,A、B、C表为对应班级选的题目序号,现在的问题是每次在DATA表更新数据后,A、B、C表自动更新,不用手动输入,很费时。希望我把问题已经讲明白了。期待高手解决,方法越简单越好。急。
如何将附件中的甲乙丙丁1文件在添加记录时自动更新为甲乙丙丁2

珍惜资源,请勿重复发贴!    ——xiangzi728

甲乙丙丁.rar (3.32 KB, 下载次数: 24)

[ 本帖最后由 xiangzi728 于 2010-10-5 23:17 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-10-3 03:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
A表A2=INDEX(数据DATA!$A:$A,SMALL(IF(数据DATA!$B$1:$B$1000=A$1,ROW($A$1:$A$1000)),ROW($A1)))数组右拉下拉
B表A2=INDEX(数据DATA!$A:$A,SMALL(IF(数据DATA!$C$1:$C$1000=A$1,ROW($A$1:$A$1000)),ROW($A1)))数组右拉下拉
C表A2=INDEX(数据DATA!$A:$A,SMALL(IF(数据DATA!$D$1:$D$1000=A$1,ROW($A$1:$A$1000)),ROW($A1)))数组右拉下拉

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-3 06:04 | 显示全部楼层
非常谢谢,如果可以达到如下效果会更好,每次在更新DATA后,在A、B、C SHEET表中,每一行并不是都会有数字的,那么我每次往下拉的时候,就会有单元格出现#NUM!项,其实我想能不能首先就上拉下拉至1000行,并且没有数据项以空白代替,注意不是#NUM!或0哦,因为#NUM!或0会影响求平均值等计算,这样就不用每次都拉一次,没有数据的显示为空白,更新DATA后空白自动变为数据,这样更加方便。不知道我说清楚没,非常谢谢你的解答,同时期待高手进一步改进。

TA的精华主题

TA的得分主题

发表于 2010-10-3 07:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
用数组公式数据多了运算会很慢,公式先按500行写:
=INDEX(数据DATA!$A:$A,SMALL(IF(数据DATA!$B$1:$B$500=A$1,ROW($1:$500),4^8),ROW(A1)))&""数组公式,如需增加,改500为其它数(两个都改)。
甲乙丙丁1-1.rar (42.41 KB, 下载次数: 23)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-3 12:14 | 显示全部楼层
这个符合我的意思,非常感谢高手的帮忙,不过计算有点慢,还好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-3 12:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=INDEX(数据DATA!$A:$A,SMALL(IF(数据DATA!$B$1:$B$500=A$1,ROW($1:$500),4^8),ROW(A1)))&""
能不能解释一下,公式各部分代表的意思啊,因为我要明白它的意思才能套用

TA的精华主题

TA的得分主题

发表于 2010-10-3 13:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=INDEX(数据DATA!$A:$A,SMALL(IF(数据DATA!$B$1:$B$500=A$1,ROW($1:$500),4^8),ROW(A1)))&""
IF(数据DATA!$B$1:$B$500=A$1,ROW($1:$500),4^8)——如果数据表B1至B500中等于当前表A1,返回对应行号,不符合条件的返回4^8(即65536,2003版中最后一行行号。用任意一个没有数据的空白行就可以了)。结果为一由行号组成的数组。
SMALL(行号数组,ROW(A1))——取第一个最小值,用行号数确定第n个最小值,下拉一行为第二个最小值。
INDEX(数据DATA!$A:$A,符合条件行号)——在数据表A列中根据符合条件的行号取值。
&""——当符合条件的数据取完后,取65536行的数据,结果为0,“&""”就是把0值转为空文本。

[ 本帖最后由 yyqq16888 于 2010-10-3 13:33 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-10-5 15:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

没有数组公式会更快!

除原始数据外每个工作表仅用两个辅助列,换来的运算速度必定会更快

甲乙丙丁h.rar

66.17 KB, 下载次数: 8

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

本版积分规则

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

GMT+8, 2024-11-25 17:30 , Processed in 0.046702 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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