循环与多个约束

我目前有一个macros查找一个列表(下面的例子),目前只有当问题已经失败时才回拉评论。 看代码。 我需要做的是build立一个简单的方法来撤回评论,如果它是一个通行证,并有评论。 如果它没有评论通过它需要被忽略。

我有一些想法,但他们似乎过于复杂。

码;

For Each Cell In Sheets("Sharepoint Raw").Range("M2:M3000") If Cell.Value = mpan Then For Each x In Sheets("Sharepoint Raw").Range("O" & Cell.row & ":AG" & Cell.row & "") If x.Value = "Fail" Then copycount = copycount + 1 Sheets(1).Cells(copycount, 2) = Sheets("Sharepoint Raw").Cells(1, x.Column) Sheets(1).Cells(copycount, 4) = "Fail" Sheets(1).Cells(copycount, 5) = Sheets("Sharepoint Raw").Cells(x.row, x.Column + 1) Sheets(1).Cells(305, 16) = Sheets("Sharepoint Raw").Cells(x.row, 37) Else Sheets(1).Cells(305, 16) = Sheets("Sharepoint Raw").Cells(x.row, 37) End If Next x End If Next Cell 

烤盘;

 ╔══════╦══════════════╦══════╦═══════════════╦══════╦═══════════════╦══════╦══════════════════╗ ║ Q1. ║ Q1. Comments ║ Q2. ║ Q2. Comments? ║ Q3. ║ Q3. Comments? ║ Q4. ║ Q4. Comments? ║ ╠══════╬══════════════╬══════╬═══════════════╬══════╬═══════════════╬══════╬══════════════════╣ ║ Fail ║ ║ Fail ║ ║ Pass ║ ║ Pass ║ ║ ║ N/A ║ ║ N/A ║ ║ Pass ║ ║ Pass ║ Example comment' ║ ║ Pass ║ ║ Fail ║ ║ Pass ║ ║ Pass ║ ║ ╚══════╩══════════════╩══════╩═══════════════╩══════╩═══════════════╩══════╩══════════════════╝ 

需要像(显然这不会工作,但有类似的东西)

 If x.Value = "Pass" AND X+1.value IS NOT NULL Then 

考虑下面的macros:

 Option Explicit Sub Offset() Dim Cell As Range Set Cell = Range("D27") Debug.Print Cell.Address Debug.Print Cell.Offset(0, 1).Address Debug.Print Cell.Offset(5, -3).Address End Sub 

它将以下内容输出到即时窗口:

 $D$27 $E$27 $A$32 

我已经将Cell设置为任意单元格地址。 Debug.Print Cell.Address根据您的预期输出$D$27

Cell.Offset(0, 1)将1加到列号上,结果输出$E$27 。 这是你寻求的X+1

最后一个例子并不直接与您的要求相关,但是显示您也可以调整行号,并且允许负偏移。