Excel将多个单元格与vba进行比较
问题描述:
我需要Excel VBA帮助。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 Already Used!"
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
但我需要更多的行和列进行比较。
答
第一件事第一件事。
Dim R1, R2, R3 As Range
您可以在VB.Net这样做,所有三个将被宣布为Range
但在VBA中,你必须明确地声明为Range
否则前两个将被宣布为Variant
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
而且不是将&对于降,我会建议使用数据验证列表,这样你就不必使用.Undo
。您可以简单地清除单元格的内容。
答
这里不需要VBA。设置E3单元格的自定义数据验证规则用下面的公式:
=OR(ISBLANK(E3),COUNTIF($E3:$I3,E3)=1)
然后将细胞复制到G3和I3,以及复制排3倒至于你所需要的。然后,您可以使用“数据验证”向导设置自定义错误消息。
上面的公式假定您只需要检查同一行中的值(如您所述)。
我试了一下,它发现,如果它不是拖放,但客户希望工作表是一个拖放类型。 – user6670582