Excel VBA – 如果在r> 1> x和v在rng 2 <y中,则执行一些操作

我有2个范围内的值,将确定一个单元格是否突出显示。 逻辑如下,但我似乎无法弄清楚正确的VBA代码。

Dim earlyLeave As Range, tCOut As Range, tMOwed As Range For Each earlyLeave In Range("A31:A37") If x in range("g21:g27") > 20 And y in range("b31:b37") < 0 Then ......(highlight formatting)........ End If Next earlyLeave 

编辑:用正确的variables回答下面的答案:

  Dim earlyLeave As Range, tCOut As Range, tMOwed As Range For Each earlyLeave In Range("A31:A37") For Each tCOut In Range("G21:G27") If tCOut.Value > 20 Then For Each tMOwed In Range("B31:B37") If tMOwed.Value < 0 Then Selection.FormatConditions.Interior.Color = 255 End If Next tMOwed End If Next tCOut Next earlyLeave 

编辑:当前电子表格的屏幕截图如下。 如果g21:g27中的值小于20和/或b31:b37中的值大于0,则需要范围a31:a37中的单元格高亮显示颜色(现在为255,红色) a应该匹配a,b到b等等…

在这里输入图像说明

使用Application.Match函数在以下代码中查找与Range("A31:A37")相关的Range("A21:A27")中的相关行。

 Option Explicit Sub AnalystTst() Dim earlyLeave As Range, tCOut As Range, tMOwed As Range Dim RowMatch As Variant For Each tMOwed In Range("B31:B37") If tMOwed.Value > 0 Then tMOwed.Offset(, -1).Interior.Color = 255 Else 'find the relevant row in Range("A21:A27") using the Match Function RowMatch = Application.Match(tMOwed.Offset(, -1).Value, Range("A21:A27"), 0) If Not IsError(RowMatch) Then '<-- successful Match If Range("G" & Range("A21:A27").Row + RowMatch - 1).Value < 20 Then tMOwed.Offset(, -1).Interior.Color = 255 End If End If End If Next tMOwed End Sub 

为什么不为这个任务使用条件格式。 select单元格然后在主页选项卡/条件格式/使用公式来确定哪些单元格/

添加下面的expression式

 =($C21<20)+($b31>0) 

然后将格式填充颜色设置为红色。 这将使得任何VBA代码都可以运行得更快。

 Dim earlyLeave As Range For Each earlyLeave In Range("A31:A37") If Range("G" & (earlyLeave.Row-10)).Value < 20 or Range("B" & (earlyLeave.Row)).Value > 0 Then earlyLeave.Interior.Color = RGB(255,0,0) End If Next earlyLeave 

现在编辑更接近各种意见