楼主 gouweicao78 |
【答题期限】2009-12-20日0:00截稿(以回帖时间为准),欢迎大家踊跃参与。 【题目】 当启动B1单元格后,在A1单元格输入数值,实现以下功能: 1、在B5单元格求出满足要求的历史高值 2、在B7单元格求出满足要求的历史低值 3、在B9单元格求出超限次数 4、在B11:B21依次记录每次超限的数字 具体功能见动画 【限制】 1、A1的值在不小于-100或不大于100算满足要求 2、当启动后,A1可能被清空单元格,不得视为0值参与计算 【要求】 1、使用函数与公式实现,不使用定义名称、VBA功能 2、跟帖上传压缩后的工作簿附件,工作簿命名为本练习+ID名 如:【循环引用】练习-求满足要求的历史极限值及记录超限值-gouweicao78 【评分】 1、实现B5、B7功能,得3个技能分 2、实现B9、B11:B21功能,得2个技能分 3、写清思路解析和优秀答案可再获得1~3个技能分 附件: 【循环引用】练习-求满足要求的历史极限值及记录超限值.rar |
2楼 biaotiger1 |
草版的附件我没下载,我按照草版的动画自己做了一个(详见动画) 如果没有太多变动,那么步骤如下 【步骤】 1、“开发工具”选项卡->“控件”选项组中单击“插入”,在“表单”组中选择复选框,按下左键,鼠标在工作表上拖动,得到一个复选框,更改名字为“启动” 右键单击该复选框,设置控件格式,激活“控制”选项卡,“单元格链接”文本框输入$B$1 2、设置“迭代次数”为1 3、B5输入公式=TEXT(IF(B1,IF(AND(A1>=-100,A1<=100),IF(B5="",A1,MAX(A1,--B5)),B5),),"#;-#;;") B7输入公式=TEXT(IF(B1,IF(AND(A1>=-100,A1<=100),IF(B7="",A1,MIN(A1,--B7)),B7),),"#;-#;;") 内层if为B7单元格设置一个初始值,并返回对应max或min数值 第二层if为判断A1数值范围 最外层if为判断B1单元格是否为true text函数的作用在于屏蔽0 4、B3输入公式=IF(B1,IF(OR(A1>100,A1<-100),IF(B3=0,"",B3)&A1&"/",B3),"") 如果B1为true,而A1单元格数据又超出范围,则在该单元格中累加叠放,通过“/”分隔 5、B11输入公式==IF(B$9<ROW()-10,"",REPLACE(REPLACE("/"&B$3,FIND("\",SUBSTITUTE("/"&B$3,"/","\",ROW()-9)),99,""),1,FIND("\",SUBSTITUTE("/"&B$3,"/","\",ROW()-10)),"")) ,下拉至B25单元格 查找对应的“/”分隔的数字,并返回到对应单元格中 6、设置B3单元格文字为白色 【循环引用】练习-求满足要求的历史极限值及记录超限值-biaotiger1.rar |
3楼 rongjun |
【循环引用】练习-求满足要求的历史极限值及记录超限值-rongjun.rar |
4楼 knifefox |
【循环引用】练习-求满足要求的历史极限值及记录超限值-knifefox.rar |
5楼 gouweicao78 |
我的答案: B5=IF(B1,IF((A1<>"")*(ABS(A1)<=100),MAX(A1,B5),B5),"") B7类似。 思路:启动B1后,如果A1不为空且A1的绝对值小于等于100,就返回A1和B5中的最大值,否则保留B5的值不变。 B9=IF(B1,N(B9)+(ABS(A1)>100),"") 思路:利用N(B9)将B9初始值(空文本)返回为0,当A1绝对值超限时,ABS(A1)>100返回TRUE,代入运算为1。 B11=IF(B$1,IF((B11="")*(ROW(1:1)=B$9),A$1,B11),"") 思路:利用B9的计数器,如果B11为空且计数器是第一个,则将A1的值返回给B11,否则保留B11的值(这样当A1值第2次超限也不会改变B11的值) 【循环引用】练习-求满足要求的历史极限值及记录超限值.rar |