首页 > 解决方案 > Excel VBA 如果 rngcell= 和下一个单元格 = 那么这个单元格 = 和下一个单元格 =

问题描述

我正在寻找比较两个单元格范围,第一个目标是查看是否有任何差异,即该单元格是否出现在此范围内。其次,如果单元格确实出现,则下一个单元格获得此值。

目前我已经能够输出第一个范围内没有出现在第二个范围内的任何单元格:

For Each rngCell In Range("F7:F500")
    If WorksheetFunction.CountIf(Range("H7:H500"), rngCell) = 0 Then
        Range("O" & Rows.Count).End(xlUp).Offset(1) = rngCell
    End If
Next

尽管到目前为止,我已经尝试了以下方法,但我对如何处理第二部分非常迷茫:

For Each rngCell In Range("B6:B500")
    If WorksheetFunction.CountIf(Range("H7:H500"), rngCell) = 0 Then
    Set r2 = Range("E7:E500")
    Else If (Range("H7:H500")) and WorksheetFunction.CountIf(r2("vault")) Then
    Range("O" & Rows.Count).End(xlUp).Offset(1) = rngCell

本质上,我正在寻找一个输出,其中包含第一个范围内但不是第二个范围内的所有单元格以及第一个范围内和第二个范围内但下一个单元格包含特定值的所有单元格。

标签: excelvba

解决方案


这里有一些尝试...

我喜欢 Range/xlUp/Offset(1) 不断添加到列表的底部。

(需要前面的 Columns("O:O").ClearContents)

如果我错了,请纠正我。

让我们澄清第二个目标——第一个范围和第二个范围内的所有单元格,但下一个单元格包含特定值。

  If  rngCell("B6:B500") IS in Range("H7:H500") 
  AND rngCell("B6:B500") IS in Range("E7:E500") MATCH (not CountIf) to get the row number
  AND if MatchedRowNum > 0 then
  AND "vault"            IS in Range("E7:E500").Offset(MatchedRowNum + 1)

推荐阅读