VBA代码:如果单元格x =单元格y清除单元格y

时间:2019-07-16 14:46:49

标签: excel vba

我有一张工作表,用于分配人的特定职责。这会自动填充长期VB中的名称。在极少发生的情况下,只有不到4个人进行特定轮班,我的代码最终会将相同的名称放入2个单元格中,而不只是一个。 (由于我是如何进行某种串联的)

代码运行后,我想进行错误检查,以查看相同的名称是否出现在其上方的单元格中。如果是这样,我想清除上面的单元格。

名称在其中的单元格必须在VB中为范围,因为它们跨越一列以上。

我已经尝试过下面的代码无法运行,我觉得检查一个单元格是否等于另一个单元格以及是否清除指定的单元格应该是相当简单的。我无法正常工作

Sub errorcatch()

    If Range("F33:G33").Value = Range("F32:G32").Value Then

      Range("F32:G32").Clear

    End If

End Sub

3 个答案:

答案 0 :(得分:1)

If Range("F33").Value = Range("F32").Value And Range("G33").Value = Range("G32").Value Then
    Range("F32:G32").Clear
End If

答案 1 :(得分:0)

这将检查F列中的单元格是否与下面的单元格匹配,G列中的单元格是否与下面的单元格匹配。
它将沿F列中的每个单元向下移动,直到到达数据底部为止。

Public Sub Test()

    Dim rData As Range
    Dim rCell As Range

    With ThisWorkbook.Worksheets("Sheet1")
        'Range will go from F1 to bottom of data in column F (column 6).
        Set rData = .Range("F1", .Cells(.Rows.Count, 6).End(xlUp))
    End With

    'Cycle through each cell in rData.
    For Each rCell In rData
        'If rCell is the same as the cell below, and the cell to the right is the same
        'as the cell to the right and one cell down then clear the contents.
        If rCell = rCell.Offset(1) And rCell.Offset(, 1) = rCell.Offset(1, 1) Then
            rCell.Resize(, 2).ClearContents
        End If
    Next rCell

End Sub

进一步阅读:Offset

答案 2 :(得分:-1)

您可以尝试仅引用单元格值而不是范围:

Sub errorcatch()
     [g32] = IIf ([g33] = [g32], "", [g32]) 
End Sub