2017-06-04 7 views
0
Sub NewMacro() 
Dim endRow As Long 
endRow = Sheet1.Range("A999999").End(xlUp).Row 
For i = 1 To endRow 
If Sheet1.Range("A" & i).Value = Sheet1.Range("F" & i).Value Then 
    Sheet1.Range("K" & i).Value = "Yes"  Else 
    Sheet1.Range("K" & i).Value = "No" 
End If 
Next i 
End Sub 

这将比较列A与F列,并将结果显示在列K. 我需要的是,如果该值为true,则像上面应该比较B列列G,列C,列H等......并将结果显示在下一列中。请帮忙。Microsoft Excel中VBA脚本:递归列匹配

回答

0

我想你需要在列的循环:

Sub NewMacro() 
    Dim endRow As Long 
    Dim i As Long 
    Dim c As Long 
    With Sheet1 
     endRow = .Range("A" & .Rows.Count).End(xlUp).Row 
     For i = 1 To endRow 
      For c = 1 To 5 
       If .Cells(i, c).Value = .Cells(i, c + 5).Value Then 
        .Cells(i, c + 10).Value = "Yes" 
       Else 
        .Cells(i, c + 10).Value = "No" 
       End If 
      Next c 
     Next i 
    End With 
End Sub 

此相比列A被F,B列与G,列C与H,柱d与I和E列与J.结果是分别放在K,L,M,N和O列。

这相当于在单元格K1中使用公式=IF(A1=F1,"Yes","No")并在其上进行复制。


和版本将更新为“是”列,但只要它达到停止“无”:

Sub NewMacro() 
    Dim endRow As Long 
    Dim i As Long 
    Dim c As Long 
    With Sheet1 
     endRow = .Range("A" & .Rows.Count).End(xlUp).Row 
     For i = 1 To endRow 
      For c = 1 To 5 
       If .Cells(i, c).Value = .Cells(i, c + 5).Value Then 
        .Cells(i, c + 10).Value = "Yes" 
       Else 
        .Cells(i, c + 10).Value = "No" 
        Exit For 
       End If 
      Next c 
     Next i 
    End With 
End Sub 
+0

非常感谢你的帮助。 :) –

+0

但是,只有当列K中的结果为“是”,然后将列B与G等比较时,第一个代码才可以。如果K =“否”,那么没有进一步匹配该行。 –

+0

@TitusSam我用一个不断插入“是”值的版本更新了答案,但一旦碰到“否”就停下来。 – YowE3K