Excel精英培训网

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

求助:自动跳出某人成绩排名,谢谢。

[复制链接]
发表于 2019-7-19 09:50 | 显示全部楼层 |阅读模式
1学分
本帖最后由 chensir 于 2019-7-19 09:56 编辑

怎样用VBA实现,鼠标经过某人的成绩就会跳出批注或文本框,显示此人的排名情况,谢谢。

工作簿2.rar

5.81 KB, 下载次数: 6

最佳答案

查看完整内容

鼠标滑过单元格不能显示排名,因为鼠标滑过不能触发单元格事件。但鼠标点击单元格可以触发。 在工作表的selectchange中添加代码。人数很多时或许有点卡,因为每次点击都要重新实时计算,没有实际的大数据量,我也不能确定: Dim arr arr = Range(Cells(2, 2), Cells(.End(3).Row, 3)) For i = 1 To UBound(arr) For k = i + 1 To UBound(arr) If arr(i, 2) < arr(k, 2) Then s1 = arr(i, 1) ...
发表于 2019-7-19 09:50 | 显示全部楼层
鼠标滑过单元格不能显示排名,因为鼠标滑过不能触发单元格事件。但鼠标点击单元格可以触发。

在工作表的selectchange中添加代码。人数很多时或许有点卡,因为每次点击都要重新实时计算,没有实际的大数据量,我也不能确定:
Dim arr
arr = Range(Cells(2, 2), Cells([b10000].End(3).Row, 3))
For i = 1 To UBound(arr)
    For k = i + 1 To UBound(arr)
        If arr(i, 2) < arr(k, 2) Then
           s1 = arr(i, 1)
           s2 = arr(i, 2)
           arr(i, 1) = arr(k, 1)
           arr(i, 2) = arr(k, 2)
           arr(k, 1) = s1
           arr(k, 2) = s2
        End If
    Next k
Next i
pm = arr
If (Target.Column = 2) And (Not IsEmpty(Target.Cells)) Then
  s = Target.Cells
  For i = 1 To UBound(pm)
      If s = pm(i, 1) Then
         MsgBox pm(i, 1) & "  排名: " & i
         Exit Sub
      End If
  Next i
End If
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 15:02 , Processed in 0.194277 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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