繁体   English   中英

Excel与VBA比较多个单元格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM