[英]Excel comparing multiple cells with 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行。 然后,您可以使用“数据验证”向导设置自定义错误消息。
上面的公式假定您只需要检查同一行中的值(如您所述)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.