我正在尝试在第三列(“C”)的18个单元格中设置条件格式。我合并了第一列中的每个6个单元(“A”)和第二列中的未合并(正常)单元(“B”)。如果在“A”列的第一行中有“是”或者“A”列中是否存在“否”并且“在”中“通过”,我试图检查列“C”行中的每个下一个单元格B“专栏。诀窍是,我想只检查“A”列的第一行,第七,第十三和第十九(所以步骤= 6)并检查“B”列中的每一行。我尝试这样的事情:
Sub try()
Dim i As Integer
Dim j As Integer
i = 1
For j = 1 To 12
With Range("C1:C18")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=OR(Cells(i, 1) = ""Yes""; AND(Cells(i, 1) = ""No""; Cells(j, 2) = ""Pass""))"
End With
If j Mod 6 = 0 Then
i = i + 6
Next j
End Sub
但是它没有那样工作,我看到了像“A1”或“A3”这样的特定单元格的例子,但是我希望每个循环都有一个数字增加(所以我尝试使用Cells(行,列))。 / p>
答案 0 :(得分:0)
您可以使用相对地址在整个范围内的一个语句中执行此操作,因此适用于C1
相对于A1
和B1
的内容将自动跟随在后续行中范围。
唯一的技巧是检索列A
中的值,因为此值仅在单元格A1
,A7
等中可用。这是通过表达式{{1 }}
OFFSET(A1,-MOD(ROW(C1)-1,6),0)
您也可以使用相同的公式从GUI执行此操作;选择单元格C1然后选择整个范围Sub doIt()
With Sheet1.Range("C1:C30").FormatConditions
.Delete
.Add(xlExpression, , _
"=OR(OFFSET(A1,-MOD(ROW(C1)-1,6),0)=""yes"",AND(OFFSET(A1,-MOD(ROW(A1)-1,6),0)=""no"",B1=""pass""))") _
.Interior.ColorIndex = 6
End With
End Sub
,然后单击
C1:C30
并输入相同的公式。
Conditional Fomatting -> New rule -> Use a formula...
,表达式可以进一步简化,这意味着如果确保A列是"是"或"不"。