如果工作表上的值与另一工作表上的值不匹配,则发出错误警报

时间:2020-04-01 02:03:13

标签: excel vba

当我在“ Sheet 3”上输入值时(在页面上的任何单元格中,从B5到OD70,从B124到OD300),我需要输入错误(允许输入名称,但喜欢将其涂成红色或其他颜色)提醒他们)是否与“表格1”列B中的值不完全匹配。

我已经尝试了一些条件格式的If语句,但是对于许多单元格来说这似乎非常困难。

2 个答案:

答案 0 :(得分:0)

应用CF应该没有困难。请按照下列步骤。

  1. 在Sheet3上,选择任何单元格。我选择了C2。
  2. 调用CF>新建规则>“使用公式来确定要格式化的单元格
  3. 输入公式=ISERROR(MATCH(C2,Sheet1!$A:$A,0)),其中C2是您选择对其应用CF的单元格的地址。
  4. 选择所需的格式(例如红色填充),然后单击“确定”。
  5. 从功能区的CF菜单中选择管理规则...
  6. 在打开的对话框中,选择您刚刚设置的规则。在适用于字段中,您将看到=$C$2(或所选单元格的地址。
  7. 将此公式替换为=$B$5:$OD$70,$B$124:$OD$300
  8. 按“确定”并应用格式。

在Sheet1!A:A中不完全匹配的单元格将突出显示。如果您不忽略应用于空白单元格的格式,请使用下面的公式代替上面的公式。

=AND(LEN(C2),ISERROR(MATCH(C2,Sheet1!$A:$A,0)))

答案 1 :(得分:0)

我会使用Worksheet事件处理程序,因为大规模CF会使工作表的计算和行为变得混乱

只需激活Sheet3代码窗格(右键单击其选项卡名称并选择“查看代码”),然后放置以下代码即可:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    If Intersect(Target, Union(Range("B5:OD70"), Range("B124:OD300"))) Is Nothing Then Exit Sub

    If Target.Value <> Sheet1.Cells(Target.Row, 2).Value Then MsgBox "Attention" _
                                                                     & vbCrLf & vbCrLf & "The input value:" _
                                                                     & vbCrLf & vbTab & Target.Value _
                                                                     & vbCrLf & vbCrLf & "doesn't match the one in Sheet1 cell B" & Target.Row, vbCritical
End Sub
相关问题