读书人

VBA找出每列的最大值和最小值并且分别

发布时间: 2012-01-20 18:53:53 作者: rapoo

VBA找出每列的最大值和最小值并且分别用红色和黄色标出来
怎么有错啊

VB code
Sub GetMax()Range.Find(Application.WorksheetFunction.Max(Range("D1:D24"))).ActivateActiveSheet.Cells(1, 1).Interior.ColorIndex = 3End Sub


[解决办法]
可以用条件格式,试试这个
Range("D1:D24").FormatConditions.Delete
Range("D1:D24").FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=MAX($D$1:$D$24)"
Range("D1:D24").FormatConditions(1).Font.ColorIndex = 3
Range("D1:D24").FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=MIN($D$1:$D$24)"
Range("D1:D24").FormatConditions(2).Font.ColorIndex = 6
[解决办法]
Range("D1:D24").FormatConditions.Delete
Range("D1:D24").FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=MAX($D$1:$D$24)"
Range("D1:D24").FormatConditions(1).Interior.ColorIndex = 3
Range("D1:D24").FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=MIN($D$1:$D$24)"
Range("D1:D24").FormatConditions(2).Interior.ColorIndex = 6

不错呀!
[解决办法]
探讨
还有你知道怎么把最大值后面所有的值移到最上面去不?
比如1 3 5 7 2 4变为
7 2 4 1 3 5

[解决办法]
其实不用VBA找啊,你可以直接用条件格式实现。
[解决办法]
你只需要选中A列,然后条件格式中选择公式,输入 =A1=max(A:A)
然后把格式复制到其它所有需要的列就可以了。
[解决办法]
探讨
引用:
其实不用VBA找啊,你可以直接用条件格式实现。

啊,那要怎么做啊

[解决办法]
探讨
引用:

可以用条件格式,试试这个
Range("D1:D24").FormatConditions.Delete
Range("D1:D24").FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=MAX($D$1:$D$24)"
Range("D1:D24")……

刚试了一下,可以哦,但是能不能不只是固—列啊,我有很多列啊

[解决办法]
不好意思,忘记了后面的公式,更正一下:
VBScript code
Sub Main()    Dim i&, strCh$, strRange$    For i = 1 To 150        '对前150列加条件格式        If (i < 27) Then            strCh = Chr$(64 + i)        Else            strCh = Chr$(65 + (i - 1) \ 26) & Chr$(65 + (i - 1) Mod 26)        End If        strRange = strCh & "1:" & strCh & "24"        Range(strRange).FormatConditions.Delete        Range(strRange).FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=MAX($" & strCh & "$1:$" & strCh & "$24)"        Range(strRange).FormatConditions(1).Font.ColorIndex = 3        Range(strRange).FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=MIN($" & strCh & "$1:$" & strCh & "$24)"        Range(strRange).FormatConditions(2).Font.ColorIndex = 6    NextEnd Sub
[解决办法]
To 19F:

  在 strRange = strCh & "1:" & strCh & "24"’strRange用来做什么? 之前的“疑问”:
这根本不应该算“疑问”,你要不是明白,只要在这句前加个:
Debug.Print i, strCh


看一下输出结果、对照一下 Excel工作表 的表头,就应该明白啊!


  “strRange用来做什么?”
  你没看到后面紧接着使用了5次strRange吗?若不用这个变量,你就得把后面的Range(strRange)替换成Range(strCh & "1:" & strCh & "24")。 这样每次都要做相同的运算。
  象我给的“150列”的代码中,你愿意让它做150×3 = 450次字符串运算,还是愿意让它做150×3×5 = 2250次字符串运算?

读书人网 >VB

热点推荐