Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 12421|回复: 46

[习题] 最接近数字100的单元格(参考答案在1楼)

[复制链接]
发表于 2008-6-20 18:57 | 显示全部楼层 |阅读模式
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要求返回A列最接近100的数字,并提示它所在的单元格位置,如下图&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p></p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大家先把自已的代码贴上来吧</p><p>参考答案:&nbsp; <br/>Sub test()<br/>&nbsp;Dim x%, v1%, v2%&nbsp;&nbsp;&nbsp;&nbsp; '<font color="#0808e7">声明变量<br/></font>&nbsp;For x = 1 To Range("a65536").End(xlUp).Row&nbsp;&nbsp; ''<font color="#0808e7">在A列循环</font><br/>&nbsp;&nbsp; If v1 = 0 Or v1 &gt; Abs(Cells(x, 1) - 100) Then&nbsp;&nbsp; '<font color="#0808e7">如果V1还没有赋值或V1大于当前单元格与100的差异</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v1 = Abs(Cells(x, 1) - 100)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'<font color="#0808e7">满足上面的条件(找到更接近的)重新给V1赋值</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v2 = x  '<font color="#0808e7">用变量v2记录下最接近值的行数</font><br/>&nbsp;&nbsp; End If   '<font color="#0808e7">结束判断</font><br/>&nbsp;Next x   '<font color="#0808e7">结束循环</font><br/>&nbsp;&nbsp; MsgBox "最接近100的值是" &amp; Cells(v2, 1) &amp; ",单元格地址为" &amp; Cells(v2, 1).Address <font color="#0808e7">根据V2的值得到最接近的值和单元格地址</font><br/>End Sub</p><p>总结:<font color="#0808e7"><font color="#a91313">本练习题的出题用意有两个</font>:</font></p><p><font color="#0808e7"> 1、常握在VBA中可以用ABS计算绝对值</font></p><p><font color="#0808e7">&nbsp;&nbsp;&nbsp; 2、利用循环得到最值</font></p>
[此贴子已经被作者于2008-6-21 14:55:37编辑过]

VBA练习题: 最接近数字100的单元格

VBA练习题: 最接近数字100的单元格
发表于 2008-6-20 19:15 | 显示全部楼层

<p>
游客,如果您要查看本帖隐藏内容请回复
</p>
[此贴子已经被作者于2008-6-20 19:42:34编辑过]
回复

使用道具 举报

发表于 2008-6-20 19:18 | 显示全部楼层

游客,如果您要查看本帖隐藏内容请回复

[此贴子已经被作者于2008-6-20 19:18:57编辑过]
回复

使用道具 举报

发表于 2008-6-20 19:30 | 显示全部楼层

<p>Sub ff()<br/>Dim a, i As Integer, n As Integer, ra As Range<br/>On Error Resume Next<br/>a = [a1:a13]<br/>For i = 1 To 13<br/>&nbsp;&nbsp;&nbsp; a(i, 1) = Abs(a(i, 1) - 100)<br/>Next<br/>n = WorksheetFunction.Small(a, 1)<br/>Set ra = Cells.Find(100 - n)<br/>If ra Is Nothing Then Set ra = Cells.Find(100 +<font color="#ee1111"> 1</font>)<br/>MsgBox "最接近100的值" &amp; ra.Value &amp; ",地址是" &amp; ra.Address<br/>ra.Select<br/>End Sub</p><p>改</p><p>Cells.Find(100 +<font color="#ee1111"> n</font>)</p>
[此贴子已经被作者于2008-6-20 20:09:23编辑过]
回复

使用道具 举报

发表于 2008-6-20 19:33 | 显示全部楼层

<p>2楼的代码当第一个为最接近时就有错了。</p>
[此贴子已经被作者于2008-6-20 19:36:10编辑过]
回复

使用道具 举报

发表于 2008-6-20 19:43 | 显示全部楼层

Sub ff()<br/>Dim a, i As Integer, n As Integer, r As Integer<br/>a = [a1:a13]<br/>n = WorksheetFunction.Max(a)<br/>For i = 1 To 13<br/>&nbsp;&nbsp;&nbsp; If Abs(a(i, 1) - 100) &lt; n Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = Abs(a(i, 1) - 100)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = i<br/>&nbsp;&nbsp;&nbsp; End If<br/>Next<br/>MsgBox "最接近100的值" &amp; Cells(r, 1).Value &amp; ",地址是" &amp; Cells(r, 1).address<br/>&nbsp;Cells(r, 1).Select<br/>End Sub
[此贴子已经被作者于2008-6-20 19:46:35编辑过]
回复

使用道具 举报

发表于 2008-6-20 20:29 | 显示全部楼层

这是什么给我们的练习题吗,那我也下载,学习一下,谢谢兰版!
回复

使用道具 举报

发表于 2008-6-20 20:33 | 显示全部楼层

<p>用循环法试了一下,没想到好办法![em04]</p><p>
游客,如果您要查看本帖隐藏内容请回复
</p>
回复

使用道具 举报

发表于 2008-6-20 21:02 | 显示全部楼层

只会用简单的循环和判断

游客,如果您要查看本帖隐藏内容请回复

[此贴子已经被作者于2008-6-20 21:10:16编辑过]
回复

使用道具 举报

发表于 2008-6-20 21:02 | 显示全部楼层

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 10:28 , Processed in 0.385630 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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