更改具有最大值的单元格的颜色

我试着重新调整一个范围内的最高值的单元格,但是无论我使用什么方法,似乎总是有一个组合不起作用。 我不习惯于VBA。 我试过的最后一个是:

Sub HLF() Dim HLF As Range Set HLF = WorksheetsFunction.Max(Range("H2:H7")) Range("HLF").Interior.Color = RGB(0,255,0) End Sub 

看起来,“设定”和“最大”function并不在一起。 我的基本编程逻辑说,一个正常的“范围”应该可以通过find一个范围的函数来替代,但显然Excel并不是。 我也尝试了通过select单元格,并使用“ActiveCell”而不是“范围”为单元格着色,但function和select似乎并没有在一起。 其他假设的解决scheme似乎过于复杂,这样一个小任务。

Max将从您的列中返回一个 。 这本身不会给你一个单元,这是一个范围所必需的。 你可以做的是一个小的解决方法,见下文:

 Sub test() Dim HLF As Range, finalHLF Dim maxNum As Double Set HLF = Range("H2:H7") maxNum = WorksheetFunction.Max(HLF) finalHLF = HLF.Find(what:=maxNum, lookat:=xlWhole).Address Range(finalHLF).Interior.Color = RGB(0, 255, 0) End Sub 

这将find你的最大值,然后使用该最大值,将在确定的范围内search(在你的例子中, H2:H7为最大值,然后返回该单元格的地址),然后可以继续使用.Color ,使用.Address )。

但是,也有人提出,条件格式化可能是最安全的select – 因为它很容易,而且不需要使用macros。 但是,尝试以上,让我知道如果你有任何问题!

编辑:正如@a​​son​​gtoruin所指出的,以上只会突出显示其中一个最大值,所以如果有多个相同最大值的单元格,只有一个会被突出显示。 以下代码将突出显示所有最大值:

 Sub test() Dim HLF As Range, cel As Range Dim maxNum As Double Set HLF = Range("H2:H7") maxNum = WorksheetFunction.Max(HLF) For Each cel In HLF If cel.Value = maxNum Then cel.Interior.Color = RGB(0, 255, 0) End If Next cel End Sub 

Max不返回Max的位置 – 它只是告诉你最大值是多less。 在这种情况下,您的Set HLF = WorksheetsFunction.Max(Range("H2:H7"))试图将范围HLF设置为等于您的范围内的最大值。 我想这就是为什么它抛出一个错误。

正如@Scott Craner所build议的,你可以很容易地通过条件格式来做到这一点 – 在条件格式中select“使用公式确定要格式化的单元格”,将其设置为适用于范围H2:H7并将规则设置为=H2=MAX($H$2:$H$7) 。 这样做的好处是只要你的价值观就会更新。