Excel精英培训网

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

[已解决]找出最大值

[复制链接]
发表于 2015-11-12 13:53 | 显示全部楼层 |阅读模式
本帖最后由 2198596388 于 2015-11-12 16:19 编辑

请大侠帮帮忙,怎样找出最大值(具体效果要求在附件里),先谢了!
最佳答案
2015-11-12 15:26

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c
    If Target.Row = 2 Then
        c = getMax(Cells(2, Columns.Count).End(1).Column)
        Rows(2).Interior.ColorIndex = 0
        Cells(2, c).Interior.ColorIndex = 4
    End If
End Sub

Function getMax(c)
    Dim k, A, j, x, y
    k = 3    '偏移3列
    A = Range([a2], Cells(2, c + k))
    For j = 1 To UBound(A, 2) Step 6
        If x < A(1, j + k) Then x = A(1, j + k): y = j + k
    Next j
    getMax = y
End Function

找出最大值2.rar (13.24 KB, 下载次数: 12)
 楼主| 发表于 2015-11-12 13:53 | 显示全部楼层
http://www.excelpx.com/forum.php?mod=attachment&aid=Mzc5MDg3fGEzMWVkNWUzYTkzOGRmNzU3YWExZTVjMGQ0YmQyNzg0fDE3MTE2OTM0Mjg%3D&request=yes&_f=.zip
回复

使用道具 举报

 楼主| 发表于 2015-11-12 13:55 | 显示全部楼层
找出最大值:附件 找出最大值.zip (6.86 KB, 下载次数: 8)
回复

使用道具 举报

发表于 2015-11-12 15:26 | 显示全部楼层    本楼为最佳答案   

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c
    If Target.Row = 2 Then
        c = getMax(Cells(2, Columns.Count).End(1).Column)
        Rows(2).Interior.ColorIndex = 0
        Cells(2, c).Interior.ColorIndex = 4
    End If
End Sub

Function getMax(c)
    Dim k, A, j, x, y
    k = 3    '偏移3列
    A = Range([a2], Cells(2, c + k))
    For j = 1 To UBound(A, 2) Step 6
        If x < A(1, j + k) Then x = A(1, j + k): y = j + k
    Next j
    getMax = y
End Function

找出最大值2.rar (13.24 KB, 下载次数: 12)
回复

使用道具 举报

 楼主| 发表于 2015-11-12 16:18 | 显示全部楼层
爱疯 发表于 2015-11-12 15:26
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c
    If Target.Row = 2 Then

谢谢爱疯大侠!很具体,学习学习了
回复

使用道具 举报

 楼主| 发表于 2015-11-12 17:05 | 显示全部楼层
爱疯 发表于 2015-11-12 15:26
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c
    If Target.Row = 2 Then


有2个以上相同的最大值时,这些最大值都应该变成绿色底才对呀?!代码中怎么只能有1个数值(最大值)变绿色底呢?代码怎么修改一下呢?请大侠再帮看看
回复

使用道具 举报

发表于 2015-11-12 20:26 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim k, A, j, x

    If Target.Row = 2 Then
        k = 3    '偏移3列
        A = Range([a2], Cells(2, Cells(2, Columns.Count).End(1).Column + k))

        '1)查找最大值x
        For j = 1 To UBound(A, 2) Step 6
            If x < A(1, j + k) Then x = A(1, j + k)
        Next j

        '2)填色
        Rows(2).Interior.ColorIndex = 0
        For j = 1 To UBound(A, 2) Step 6
            If x = A(1, j + k) Then Cells(2, j + k).Interior.ColorIndex = 4
        Next j
    End If
End Sub
找出最大值3.rar (14.83 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2015-11-12 20:46 | 显示全部楼层
爱疯 发表于 2015-11-12 20:26
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim k, A, j, x

如果是查找最小值,是把“<”小于号改换成“>”大于号吗?

点评

是的  发表于 2015-11-12 20:49
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:23 , Processed in 3.072080 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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