Excel使用vba比较多个单元格
我需要有关Excel VBA的帮助 我想知道如何比较同一行不同列中的多个单元格 我需要比较一些特定的细胞E3、G3、I3,找出其中是否有重复的细胞,并移除第一个细胞的重复细胞 注意:拖放功能用于填充数据 我试过用这样的东西Excel使用vba比较多个单元格,vba,excel,Vba,Excel,我需要有关Excel VBA的帮助 我想知道如何比较同一行不同列中的多个单元格 我需要比较一些特定的细胞E3、G3、I3,找出其中是否有重复的细胞,并移除第一个细胞的重复细胞 注意:拖放功能用于填充数据 我试过用这样的东西 Dim R1, R2, R3 As Range Set R1 = Range("E3") Set R2 = Range("G3") Set R3 = Range("I3") If (R1 = R2 Or R1 = R3) Then MsgBox "Room Alrea
Dim R1, R2, R3 As Range
Set R1 = Range("E3")
Set R2 = Range("G3")
Set R3 = Range("I3")
If (R1 = R2 Or R1 = R3) Then
MsgBox "Room Already Used!"
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
但我需要比较更多的行和列。首先要做的事情
Dim R1, R2, R3 As Range
您可以在VB.Net中执行此操作,所有三个都将声明为范围
,但在VBA中,您必须显式地将它们声明为范围
,否则前两个将声明为变量
Dim R1 As Range, R2 As Range, R3 As Range
要比较多个行和列,可以使用循环。比如说
With Sheet1 '<~~ Change this to the relevant sheet
For i = 3 To 8 '<~~ You actual row numbers
If .Range("E" & i).Value = .Range("G" & i).Value Or _
.Range("E" & i).Value = .Range("I" & i).Value Then
'~~> do something
End If
Next i
End With
使用Sheet1'做点什么
如果结束
接下来我
以
另外,我建议使用数据验证列表,而不是拖放,这样您就不必使用
.Undo
。您只需清除单元格内容。此处无需VBA。使用以下公式为单元格E3设置自定义数据验证规则:
=OR(ISBLANK(E3),COUNTIF($E3:$I3,E3)=1)
然后将单元格复制到G3和I3,并尽可能向下复制第3行。然后可以使用数据验证向导设置自定义错误消息
上面的公式假设您只需要检查同一行中的值(如您所述)。我尝试了这一方法,如果不是拖放式的,则结果是正确的,但客户端希望工作表是拖放式的。