Excel精英培训网

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

[已解决]查找最大值所在行号

[复制链接]
发表于 2011-1-20 22:15 | 显示全部楼层 |阅读模式
  1. Sub ExitForDemo()
  2.     Dim MaxVal As Double
  3.     Dim Row As Long
  4.     MaxVal = Application.WorksheetFunction.Max(Range("A:A")) '找到A列最大值
  5.     For Row = 1 To 1048576 '对于Excel2010版而言,遍历所有行,Excel2007没这么多行
  6.         If Cells(Row, 1).Value = MaxVal Then '找到值与最大值相等的单元格,同时几下该行号
  7.             Exit For '找到后退出
  8.         End If
  9.     Next Row
  10.     MsgBox "Max value is in Row " & Row '提示找到行号
  11.     MsgBox "Error " & Err & ": " & Error(Err.Number) '如果有错,错误及错误编号显示,与本问题无关的代码
  12.     Cells(Row, 1).Activate '激活该最大值单元格
  13. End Sub
复制代码

最佳答案
2011-1-20 22:20
本帖最后由 放浪形骸 于 2011-1-20 22:58 编辑

用循环好像有点复杂了。
你找到了MAX的话,那就FIND就很快解决了啊。

  1. Sub ExitForDemo()
  2.     Dim MaxVal As Double
  3.     Dim Row As Long
  4.     MaxVal = Application.WorksheetFunction.Max(Range("A:A")) '找到A列最大值
  5.    
  6.     Cells.Find(What:=MaxVal, After:=ActiveCell).Activate

  7.     MsgBox "Max value is in Row " & ActiveCell.Row  '提示找到行号
  8. End Sub
复制代码

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-1-20 22:20 | 显示全部楼层
回复

使用道具 举报

发表于 2011-1-20 22:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 放浪形骸 于 2011-1-20 22:58 编辑

用循环好像有点复杂了。
你找到了MAX的话,那就FIND就很快解决了啊。

  1. Sub ExitForDemo()
  2.     Dim MaxVal As Double
  3.     Dim Row As Long
  4.     MaxVal = Application.WorksheetFunction.Max(Range("A:A")) '找到A列最大值
  5.    
  6.     Cells.Find(What:=MaxVal, After:=ActiveCell).Activate

  7.     MsgBox "Max value is in Row " & ActiveCell.Row  '提示找到行号
  8. End Sub
复制代码

回复

使用道具 举报

 楼主| 发表于 2011-1-20 22:29 | 显示全部楼层
放浪形骸 发表于 2011-1-20 22:20
用循环好像有点复杂了。
你找到了MAX的话,那就FIND就很快解决了啊。

Demo版的,纯属教学目的,不具有实际用途。
回复

使用道具 举报

发表于 2011-1-20 22:33 | 显示全部楼层
录个筛选宏吧
回复

使用道具 举报

发表于 2011-1-20 22:39 | 显示全部楼层
nothingwmm 发表于 2011-1-20 22:29
Demo版的,纯属教学目的,不具有实际用途。

呵呵~~~~~ ~
回复

使用道具 举报

发表于 2011-1-20 22:58 | 显示全部楼层
已经放上了代码了。
回复

使用道具 举报

 楼主| 发表于 2011-1-20 23:05 | 显示全部楼层
放浪形骸 发表于 2011-1-20 22:58
已经放上了代码了。

很好,也想你学习了
回复

使用道具 举报

发表于 2011-1-20 23:07 | 显示全部楼层
Sub test()
MsgBox Application.Evaluate("MATCH(MAX(A:A),A:A,)")
End Sub

评分

参与人数 2 +5 收起 理由
nothingwmm + 3 很棒
放浪形骸 + 2 斑竹这个真的是最简洁明了啊。。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-1-20 23:31 | 显示全部楼层
本帖最后由 nothingwmm 于 2011-1-20 23:31 编辑
  1. Sub test1()
  2. MsgBox "最大值为 " & Application.Evaluate("max(a:a)") & vbCrLf & _
  3. Application.Evaluate("MATCH(MAX(A:A),A:A,)")
  4. End Sub
复制代码


谢谢版主yuhe0008
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 21:46 , Processed in 0.377547 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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